When a structure constructor does not initialize an allocatable component, ensure that the typed expression representation contains an explicit NULL() for the component. Expression semantics already copies default initialized expressions for nonallocatable components into structure constructors. This change is expected to simplify lowering. Differential Revision: https://reviews.llvm.org/D121162
29 lines
1.0 KiB
Fortran
29 lines
1.0 KiB
Fortran
! RUN: not %flang -falternative-parameter-statement -fsyntax-only %s 2>&1 | FileCheck %s
|
|
|
|
! Error tests for "old style" PARAMETER statements
|
|
subroutine subr(x1,x2,x3,x4,x5)
|
|
type(*), intent(in) :: x1
|
|
class(*), intent(in) :: x2
|
|
real, intent(in) :: x3(*)
|
|
real, intent(in) :: x4(:)
|
|
character(*), intent(in) :: x5
|
|
!CHECK: error: TYPE(*) dummy argument may only be used as an actual argument
|
|
parameter p1 = x1
|
|
!CHECK: error: Must be a constant value
|
|
parameter p2 = x2
|
|
!CHECK: error: Whole assumed-size array 'x3' may not appear here without subscripts
|
|
!CHECK: error: Must be a constant value
|
|
parameter p3 = x3
|
|
!CHECK: error: Must be a constant value
|
|
parameter p4 = x4
|
|
!CHECK: error: Must be a constant value
|
|
parameter p5 = x5
|
|
!CHECK: The expression must be a constant of known type
|
|
parameter p6 = z'feedfacedeadbeef'
|
|
!CHECK: error: Must be a constant value
|
|
parameter p7 = len(x5)
|
|
real :: p8
|
|
!CHECK: error: Alternative style PARAMETER 'p8' must not already have an explicit type
|
|
parameter p8 = 666
|
|
end
|