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