I stumbled across this quite by accident as I was adjusting the members of a TYPE.
The following code compiles without error with the data in the TYPE (bad, not expected), but fails if the data is outside of the TYPE (good, expected).
type:: my_struct
character*16,pointer:: abcd
character*16:: defg
end type
type (my_struct):: wxyz
character*16,pointer:: abcd
character*16:: defg
character*16,target:: my_data
wxyz%abcd => my_data ! should work
wxyz%defg => my_data ! should fail error 422 - The left hand side of the pointer assignment does not have the POINTER attribute
abcd => my_data ! should work
defg => my_data ! fails with error 422 - The left hand side of the pointer assignment does not have the POINTER attribute
end