Skip to content

Commit dfd4b74

Browse files
committed
Clean up Sema::BuildCXXNestedNameSpecifier()'s creation of TypeLoc
information. Rather than looking at the declaration kind to figure out what TypeLoc to build, look at the type; it makes so much more sense. Fixes <rdar://problem/9086649>. llvm-svn: 130882
1 parent 2a40131 commit dfd4b74

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

clang/lib/Sema/SemaCXXScopeSpec.cpp

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -546,25 +546,33 @@ bool Sema::BuildCXXNestedNameSpecifier(Scope *S,
546546
InjectedClassNameTypeLoc InjectedTL
547547
= TLB.push<InjectedClassNameTypeLoc>(T);
548548
InjectedTL.setNameLoc(IdentifierLoc);
549-
} else if (isa<RecordDecl>(SD)) {
549+
} else if (isa<RecordType>(T)) {
550550
RecordTypeLoc RecordTL = TLB.push<RecordTypeLoc>(T);
551551
RecordTL.setNameLoc(IdentifierLoc);
552-
} else if (isa<TypedefNameDecl>(SD)) {
552+
} else if (isa<TypedefType>(T)) {
553553
TypedefTypeLoc TypedefTL = TLB.push<TypedefTypeLoc>(T);
554554
TypedefTL.setNameLoc(IdentifierLoc);
555-
} else if (isa<EnumDecl>(SD)) {
555+
} else if (isa<EnumType>(T)) {
556556
EnumTypeLoc EnumTL = TLB.push<EnumTypeLoc>(T);
557557
EnumTL.setNameLoc(IdentifierLoc);
558-
} else if (isa<TemplateTypeParmDecl>(SD)) {
558+
} else if (isa<TemplateTypeParmType>(T)) {
559559
TemplateTypeParmTypeLoc TemplateTypeTL
560560
= TLB.push<TemplateTypeParmTypeLoc>(T);
561561
TemplateTypeTL.setNameLoc(IdentifierLoc);
562-
} else {
563-
assert(isa<UnresolvedUsingTypenameDecl>(SD) &&
564-
"Unhandled TypeDecl node in nested-name-specifier");
562+
} else if (isa<UnresolvedUsingType>(T)) {
565563
UnresolvedUsingTypeLoc UnresolvedTL
566564
= TLB.push<UnresolvedUsingTypeLoc>(T);
567565
UnresolvedTL.setNameLoc(IdentifierLoc);
566+
} else if (isa<SubstTemplateTypeParmType>(T)) {
567+
SubstTemplateTypeParmTypeLoc TL
568+
= TLB.push<SubstTemplateTypeParmTypeLoc>(T);
569+
TL.setNameLoc(IdentifierLoc);
570+
} else if (isa<SubstTemplateTypeParmPackType>(T)) {
571+
SubstTemplateTypeParmPackTypeLoc TL
572+
= TLB.push<SubstTemplateTypeParmPackTypeLoc>(T);
573+
TL.setNameLoc(IdentifierLoc);
574+
} else {
575+
llvm_unreachable("Unhandled TypeDecl node in nested-name-specifier");
568576
}
569577

570578
SS.Extend(Context, SourceLocation(), TLB.getTypeLocInContext(Context, T),

0 commit comments

Comments
 (0)