summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/CheckSpecifier.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-03-03 13:46:37 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-03-03 13:57:08 +0100
commit3d6f7de90929971a25fcab12ad569b6bf6db92de (patch)
tree87b6f4482ec2e8781d7983080956a05d64434613 /src/shared/cplusplus/CheckSpecifier.cpp
parentfb44054c3251f283b6774ae1edcbc989f467180d (diff)
downloadqt-creator-3d6f7de90929971a25fcab12ad569b6bf6db92de.tar.gz
Context-sensitive highlighting.
Diffstat (limited to 'src/shared/cplusplus/CheckSpecifier.cpp')
-rw-r--r--src/shared/cplusplus/CheckSpecifier.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/shared/cplusplus/CheckSpecifier.cpp b/src/shared/cplusplus/CheckSpecifier.cpp
index cd26423cfd..e79f6aa0ba 100644
--- a/src/shared/cplusplus/CheckSpecifier.cpp
+++ b/src/shared/cplusplus/CheckSpecifier.cpp
@@ -296,8 +296,13 @@ bool CheckSpecifier::visit(SimpleSpecifierAST *ast)
bool CheckSpecifier::visit(ClassSpecifierAST *ast)
{
+ unsigned sourceLocation = ast->firstToken();
+
+ if (ast->name)
+ sourceLocation = ast->name->firstToken();
+
Name *className = semantic()->check(ast->name, _scope);
- Class *klass = control()->newClass(ast->firstToken(), className);
+ Class *klass = control()->newClass(sourceLocation, className);
ast->symbol = klass;
unsigned classKey = tokenKind(ast->classkey_token);
if (classKey == T_CLASS)
@@ -358,8 +363,12 @@ bool CheckSpecifier::visit(ElaboratedTypeSpecifierAST *ast)
bool CheckSpecifier::visit(EnumSpecifierAST *ast)
{
+ unsigned sourceLocation = ast->firstToken();
+ if (ast->name)
+ sourceLocation = ast->name->firstToken();
+
Name *name = semantic()->check(ast->name, _scope);
- Enum *e = control()->newEnum(ast->firstToken(), name);
+ Enum *e = control()->newEnum(sourceLocation, name);
e->setVisibility(semantic()->currentVisibility());
_scope->enterSymbol(e);
_fullySpecifiedType.setType(e);