diff --git a/flang/lib/Evaluate/variable.cpp b/flang/lib/Evaluate/variable.cpp --- a/flang/lib/Evaluate/variable.cpp +++ b/flang/lib/Evaluate/variable.cpp @@ -240,7 +240,6 @@ const NamedEntity &base, Field field, int dim) : base_{base}, field_{field}, dimension_{dim} { const Symbol &last{base_.GetLastSymbol()}; - CHECK(IsDescriptor(last)); CHECK((field == Field::Len && dim == 0) || (field != Field::Len && dim >= 0 && dim < last.Rank())); } @@ -248,7 +247,6 @@ DescriptorInquiry::DescriptorInquiry(NamedEntity &&base, Field field, int dim) : base_{std::move(base)}, field_{field}, dimension_{dim} { const Symbol &last{base_.GetLastSymbol()}; - CHECK(IsDescriptor(last)); CHECK((field == Field::Len && dim == 0) || (field != Field::Len && dim >= 0 && dim < last.Rank())); } diff --git a/flang/test/Semantics/resolve91.f90 b/flang/test/Semantics/resolve91.f90 --- a/flang/test/Semantics/resolve91.f90 +++ b/flang/test/Semantics/resolve91.f90 @@ -44,3 +44,10 @@ real, dimension(:), pointer :: realArray => localArray end type end module m4 + +module m5 + !ERROR: Actual argument for 'string=' has bad type 'REAL(4)' + character(len=len(a)) :: b + !ERROR: The type of 'a' has already been implicitly declared + character(len=len(b)) :: a +end module m5