diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp --- a/flang/lib/Semantics/expression.cpp +++ b/flang/lib/Semantics/expression.cpp @@ -2739,7 +2739,8 @@ proc.u)}) { Symbol &symbol{origSymbol->GetUltimate()}; if (symbol.has() || - symbol.has()) { + symbol.has() || + symbol.has()) { // Note that expression in AssocEntityDetails cannot be a procedure // pointer as per C1105 so this cannot be a function reference. if constexpr (common::HasMember, diff --git a/flang/test/Semantics/resolve59.f90 b/flang/test/Semantics/resolve59.f90 --- a/flang/test/Semantics/resolve59.f90 +++ b/flang/test/Semantics/resolve59.f90 @@ -136,3 +136,16 @@ !ERROR: Reference to rank-2 object 'x' has 3 subscripts y = x(1, 2, 3) end + +subroutine with_type_param + type derived(typeParam) + integer,kind :: typeParam + integer :: field(typeParam) + end type + type(derived(3)) x + x = derived(3)([11,22,33]) + !ERROR: 'typeparam' is not a function + print *,x%typeParam() + !ERROR: Reference to array 'field' with empty subscript list + print *,x%field() +end