Index: flang/lib/Semantics/expression.cpp =================================================================== --- flang/lib/Semantics/expression.cpp +++ flang/lib/Semantics/expression.cpp @@ -1510,8 +1510,8 @@ return std::nullopt; } bool NeedLength() const { - return !explicitType_ && type_ && - type_->category() == TypeCategory::Character && !LengthIfGood(); + return type_ && type_->category() == TypeCategory::Character && + !LengthIfGood(); } void Push(MaybeExpr &&); void Add(const parser::AcValue::Triplet &); Index: flang/test/Semantics/array-constr-len.f90 =================================================================== --- flang/test/Semantics/array-constr-len.f90 +++ flang/test/Semantics/array-constr-len.f90 @@ -10,5 +10,6 @@ print *, [(s(1:j),j=1,0)] print *, [(s(1:1),j=1,0)] ! ok print *, [character(2)::(s(1:n),j=1,0)] ! ok - print *, [character(n)::(s(1:n),j=1,0)] ! ok + !ERROR: Array constructor implied DO loop has no iterations and indeterminate character length + print *, [character(n)::(s(1:n),j=1,0)] end