diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-09-01 04:26:58 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-09-01 04:26:58 +0000 |
| commit | 5da848427adeedacf39f1edf6700b15dc165c916 (patch) | |
| tree | 41f19d4c50c1d835d07abf99707b4128e325df35 /clang/lib/AST/ASTContext.cpp | |
| parent | da9817cdddd4bdded105f7e58e4f62d35248f402 (diff) | |
| download | bcm5719-llvm-5da848427adeedacf39f1edf6700b15dc165c916.tar.gz bcm5719-llvm-5da848427adeedacf39f1edf6700b15dc165c916.zip | |
Don't assert when instantiating member references to fields in anonymous structs.
llvm-svn: 80657
Diffstat (limited to 'clang/lib/AST/ASTContext.cpp')
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index eebb11da998..1143b305add 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -260,6 +260,25 @@ ASTContext::setInstantiatedFromUnresolvedUsingDecl(UsingDecl *UD, InstantiatedFromUnresolvedUsingDecl[UD] = UUD; } +FieldDecl *ASTContext::getInstantiatedFromUnnamedFieldDecl(FieldDecl *Field) { + llvm::DenseMap<FieldDecl *, FieldDecl *>::iterator Pos + = InstantiatedFromUnnamedFieldDecl.find(Field); + if (Pos == InstantiatedFromUnnamedFieldDecl.end()) + return 0; + + return Pos->second; +} + +void ASTContext::setInstantiatedFromUnnamedFieldDecl(FieldDecl *Inst, + FieldDecl *Tmpl) { + assert(!Inst->getDeclName() && "Instantiated field decl is not unnamed"); + assert(!Tmpl->getDeclName() && "Template field decl is not unnamed"); + assert(!InstantiatedFromUnnamedFieldDecl[Inst] && + "Already noted what unnamed field was instantiated from"); + + InstantiatedFromUnnamedFieldDecl[Inst] = Tmpl; +} + namespace { class BeforeInTranslationUnit : std::binary_function<SourceRange, SourceRange, bool> { |

