From 646baadb590b55e72b9c2f0c1f3b9e84cf656d45 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Mon, 9 Aug 2010 17:17:50 +0200 Subject: [PATCH] Annotate EnumSpecifierASTs with the Enum symbols. --- src/shared/cplusplus/AST.h | 4 ++++ src/shared/cplusplus/CheckSpecifier.cpp | 1 + 2 files changed, 5 insertions(+) diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index 2bbe99e2c67..b1c93cf4331 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -1623,6 +1623,9 @@ public: EnumeratorListAST *enumerator_list; unsigned rbrace_token; +public: // annotations + Enum *symbol; + public: EnumSpecifierAST() : enum_token(0) @@ -1630,6 +1633,7 @@ public: , lbrace_token(0) , enumerator_list(0) , rbrace_token(0) + , symbol(0) {} virtual EnumSpecifierAST *asEnumSpecifier() { return this; } diff --git a/src/shared/cplusplus/CheckSpecifier.cpp b/src/shared/cplusplus/CheckSpecifier.cpp index 87ff373eb30..8e8debdcfc0 100644 --- a/src/shared/cplusplus/CheckSpecifier.cpp +++ b/src/shared/cplusplus/CheckSpecifier.cpp @@ -407,6 +407,7 @@ bool CheckSpecifier::visit(EnumSpecifierAST *ast) const Name *name = semantic()->check(ast->name, _scope); Enum *e = control()->newEnum(sourceLocation, name); + ast->symbol = e; e->members()->setStartOffset(scopeStart); e->members()->setEndOffset(tokenAt(ast->lastToken() - 1).end()); e->setVisibility(semantic()->currentVisibility());