[flang] Fixed a crash

Summary:
I found a small test case that caused a crash when derived type
definitions have parameters without definitions.

Reviewers: tskeith, klausler, DavidTruby

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D79282
This commit is contained in:
Pete Steinfeld 2020-05-01 20:47:59 -07:00
parent 7cbb495ab4
commit b6f1bad630
2 changed files with 10 additions and 1 deletions

View file

@ -77,7 +77,9 @@ void DerivedTypeSpec::CookParameters(evaluate::FoldingContext &foldingContext) {
name = *nextNameIter++;
auto it{std::find_if(parameterDecls.begin(), parameterDecls.end(),
[&](const Symbol &symbol) { return symbol.name() == name; })};
CHECK(it != parameterDecls.end());
if (it == parameterDecls.end()) {
break;
}
attr = it->get().get<TypeParamDetails>().attr();
} else {
messages.Say(name_,

View file

@ -30,4 +30,11 @@ module m
!ERROR: Type parameter, component, or procedure binding 'a' already defined in this type
integer, len :: a
end type
!ERROR: No definition found for type parameter 'k'
!ERROR: No definition found for type parameter 'l'
type :: t6(k, l)
!ERROR: Must be a constant value
character(kind=k, len=l) :: d3
end type
type(t6(2, 10)) :: x3
end module