[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:
parent
7cbb495ab4
commit
b6f1bad630
|
@ -77,7 +77,9 @@ void DerivedTypeSpec::CookParameters(evaluate::FoldingContext &foldingContext) {
|
||||||
name = *nextNameIter++;
|
name = *nextNameIter++;
|
||||||
auto it{std::find_if(parameterDecls.begin(), parameterDecls.end(),
|
auto it{std::find_if(parameterDecls.begin(), parameterDecls.end(),
|
||||||
[&](const Symbol &symbol) { return symbol.name() == name; })};
|
[&](const Symbol &symbol) { return symbol.name() == name; })};
|
||||||
CHECK(it != parameterDecls.end());
|
if (it == parameterDecls.end()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
attr = it->get().get<TypeParamDetails>().attr();
|
attr = it->get().get<TypeParamDetails>().attr();
|
||||||
} else {
|
} else {
|
||||||
messages.Say(name_,
|
messages.Say(name_,
|
||||||
|
|
|
@ -30,4 +30,11 @@ module m
|
||||||
!ERROR: Type parameter, component, or procedure binding 'a' already defined in this type
|
!ERROR: Type parameter, component, or procedure binding 'a' already defined in this type
|
||||||
integer, len :: a
|
integer, len :: a
|
||||||
end type
|
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
|
end module
|
||||||
|
|
Loading…
Reference in a new issue