xref: /llvm-project/flang/test/Semantics/resolve104.f90 (revision f8dbe79cc673439db4b90cdcabcffc79348a2ca1)
16c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1
252cc9df1SPeter Steinfeld! Test constant folding of type parameter values both a base value and a
352cc9df1SPeter Steinfeld! parameter name are supplied.
452cc9df1SPeter Steinfeld!
552cc9df1SPeter Steinfeld! Type parameters are described in 7.5.3 and constant expressions are described
652cc9df1SPeter Steinfeld! in 10.1.12.  10.1.12, paragraph 4 defines whether a specification inquiry is
752cc9df1SPeter Steinfeld! a constant expression.  Section 10.1.11, paragraph 3, item (2) states that a
852cc9df1SPeter Steinfeld! type parameter inquiry is a specification inquiry.
952cc9df1SPeter Steinfeld
1052cc9df1SPeter Steinfeldmodule m1
1152cc9df1SPeter Steinfeld  type dtype(goodDefaultKind, badDefaultKind)
1252cc9df1SPeter Steinfeld    integer, kind :: goodDefaultKind = 4
1352cc9df1SPeter Steinfeld    integer, kind :: badDefaultKind = 343
1452cc9df1SPeter Steinfeld    ! next field OK only if instantiated with a good value of goodDefaultKind
1552cc9df1SPeter Steinfeld    !ERROR: KIND parameter value (99) of intrinsic type REAL did not resolve to a supported value
1652cc9df1SPeter Steinfeld    real(goodDefaultKind) :: goodDefaultField
1752cc9df1SPeter Steinfeld    ! next field OK only if instantiated with a good value of goodDefaultKind
1852cc9df1SPeter Steinfeld    !ERROR: KIND parameter value (343) of intrinsic type REAL did not resolve to a supported value
1952cc9df1SPeter Steinfeld    !ERROR: KIND parameter value (99) of intrinsic type REAL did not resolve to a supported value
2052cc9df1SPeter Steinfeld    real(badDefaultKind) :: badDefaultField
2152cc9df1SPeter Steinfeld  end type dtype
2252cc9df1SPeter Steinfeld  type(dtype) :: v1
2352cc9df1SPeter Steinfeld  type(dtype(4, 4)) :: v2
2452cc9df1SPeter Steinfeld  type(dtype(99, 4)) :: v3
2552cc9df1SPeter Steinfeld  type(dtype(4, 99)) :: v4
2652cc9df1SPeter Steinfeldend module m1
2752cc9df1SPeter Steinfeld
2852cc9df1SPeter Steinfeldmodule m2
2952cc9df1SPeter Steinfeld  type baseType(baseParam)
3052cc9df1SPeter Steinfeld    integer, kind :: baseParam = 4
3152cc9df1SPeter Steinfeld  end type baseType
3252cc9df1SPeter Steinfeld  type dtype(dtypeParam)
3352cc9df1SPeter Steinfeld    integer, kind :: dtypeParam = 4
3452cc9df1SPeter Steinfeld    type(baseType(dtypeParam)) :: baseField
3552cc9df1SPeter Steinfeld    !ERROR: KIND parameter value (343) of intrinsic type REAL did not resolve to a supported value
36*f8dbe79cSPeter Klausler    real(dtypeParam) :: realField
3752cc9df1SPeter Steinfeld  end type dtype
3852cc9df1SPeter Steinfeld
3952cc9df1SPeter Steinfeld  type(dtype) :: v1
4052cc9df1SPeter Steinfeld  type(dtype(8)) :: v2
4152cc9df1SPeter Steinfeld  type(dtype(343)) :: v3
4252cc9df1SPeter Steinfeldend module m2
4352cc9df1SPeter Steinfeld
4452cc9df1SPeter Steinfeldmodule m3
4552cc9df1SPeter Steinfeld  type dtype(goodDefaultLen, badDefaultLen)
4652cc9df1SPeter Steinfeld    integer, len :: goodDefaultLen = 4
4752cc9df1SPeter Steinfeld    integer, len :: badDefaultLen = 343
4852cc9df1SPeter Steinfeld  end type dtype
4952cc9df1SPeter Steinfeld  type(dtype) :: v1
5052cc9df1SPeter Steinfeld  type(dtype(4, 4)) :: v2
5152cc9df1SPeter Steinfeld  type(dtype(99, 4)) :: v3
5252cc9df1SPeter Steinfeld  type(dtype(4, 99)) :: v4
5352cc9df1SPeter Steinfeld  real(v1%goodDefaultLen), pointer :: pGood1
5452cc9df1SPeter Steinfeld  !ERROR: REAL(KIND=343) is not a supported type
5552cc9df1SPeter Steinfeld  real(v1%badDefaultLen), pointer :: pBad1
5652cc9df1SPeter Steinfeld  real(v2%goodDefaultLen), pointer :: pGood2
5752cc9df1SPeter Steinfeld  real(v2%badDefaultLen), pointer :: pBad2
5852cc9df1SPeter Steinfeld  !ERROR: REAL(KIND=99) is not a supported type
5952cc9df1SPeter Steinfeld  real(v3%goodDefaultLen), pointer :: pGood3
6052cc9df1SPeter Steinfeld  real(v3%badDefaultLen), pointer :: pBad3
6152cc9df1SPeter Steinfeld  real(v4%goodDefaultLen), pointer :: pGood4
6252cc9df1SPeter Steinfeld  !ERROR: REAL(KIND=99) is not a supported type
6352cc9df1SPeter Steinfeld  real(v4%badDefaultLen), pointer :: pBad4
6452cc9df1SPeter Steinfeldend module m3
65