Peter Klausler 571ad7324f
[flang] Defer processing of non-pointer variable initializers (#76475)
Initializers in entity-decls don't need to have their expressions
analyzed immediately in name resolution unless of course they are
defining the values of named constants. By deferring the expression
analysis, the compiler can better handle references to module and
internal procedures that might appear in structure constructors; at
present, these are typically rejected as being forward references (which
they can be) to subprogram names that can't yet be checked for
compatibility with the characteristics of the corresponding procedure
component.
2024-01-02 08:29:06 -08:00

39 lines
1.0 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
module m
real mobj
contains
subroutine msubr
end subroutine
end module
program main
use m
!PORTABILITY: Name 'main' declared in a main program should not have the same name as the main program
pointer main
!ERROR: Cannot change POINTER attribute on use-associated 'mobj'
pointer mobj
!ERROR: Cannot change POINTER attribute on use-associated 'msubr'
pointer msubr
!ERROR: 'inner' cannot have the POINTER attribute
pointer inner
real obj
!ERROR: 'ip' is a pointer but is not initialized like one
!ERROR: 'ip' may not have both the POINTER and PARAMETER attributes
integer, parameter :: ip = 123
pointer ip
type dt; end type
!ERROR: 'dt' cannot have the POINTER attribute
pointer dt
interface generic
subroutine extsub
end subroutine
end interface
!ERROR: 'generic' cannot have the POINTER attribute
pointer generic
namelist /nml/ obj
!ERROR: 'nml' cannot have the POINTER attribute
pointer nml
contains
subroutine inner
end subroutine
end