diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp index 467e28c92dce68e0c87dac7dd587211a4f34f559..2e5db3f73dae68e8c94fca1499a19a2a6d8c9c30 100644 --- a/src/shared/cplusplus/CheckDeclaration.cpp +++ b/src/shared/cplusplus/CheckDeclaration.cpp @@ -231,7 +231,7 @@ bool CheckDeclaration::visit(SimpleDeclarationAST *ast) Declaration *symbol = control()->newDeclaration(location, name); symbol->setStartOffset(tokenAt(ast->firstToken()).offset); - symbol->setEndOffset(tokenAt(ast->lastToken()).offset); + symbol->setEndOffset(tokenAt(ast->lastToken() - 1).end()); symbol->setType(declTy); if (declTy.isDeprecated()) @@ -322,7 +322,7 @@ bool CheckDeclaration::visit(ExceptionDeclarationAST *ast) Declaration *symbol = control()->newDeclaration(location, name); symbol->setStartOffset(tokenAt(ast->firstToken()).offset); - symbol->setEndOffset(tokenAt(ast->lastToken()).offset); + symbol->setEndOffset(tokenAt(ast->lastToken() - 1).end()); symbol->setType(declTy); _scope->enterSymbol(symbol); @@ -349,7 +349,7 @@ bool CheckDeclaration::visit(FunctionDefinitionAST *ast) if (ty.isUnavailable()) fun->setUnavailable(true); fun->setStartOffset(tokenAt(ast->firstToken()).offset); - fun->setEndOffset(tokenAt(ast->lastToken()).offset); + fun->setEndOffset(tokenAt(ast->lastToken() - 1).end()); if (ast->declarator) fun->setSourceLocation(ast->declarator->firstToken(), translationUnit()); fun->setName(name); @@ -415,7 +415,7 @@ bool CheckDeclaration::visit(NamespaceAST *ast) Namespace *ns = control()->newNamespace(sourceLocation, namespaceName); ns->setStartOffset(tokenAt(ast->firstToken()).offset); - ns->setEndOffset(tokenAt(ast->lastToken()).offset); + ns->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = ns; _scope->enterSymbol(ns); semantic()->check(ast->linkage_body, ns->members()); // ### we'll do the merge later. @@ -440,7 +440,7 @@ bool CheckDeclaration::visit(NamespaceAliasDefinitionAST *ast) NamespaceAlias *namespaceAlias = control()->newNamespaceAlias(sourceLocation, name); namespaceAlias->setNamespaceName(namespaceName); namespaceAlias->setStartOffset(tokenAt(ast->firstToken()).offset); - namespaceAlias->setEndOffset(tokenAt(ast->lastToken()).offset); + namespaceAlias->setEndOffset(tokenAt(ast->lastToken() - 1).end()); //ast->symbol = namespaceAlias; _scope->enterSymbol(namespaceAlias); @@ -574,7 +574,7 @@ bool CheckDeclaration::visit(ObjCProtocolForwardDeclarationAST *ast) const Name *protocolName = semantic()->check(it->value, _scope); ObjCForwardProtocolDeclaration *fwdProtocol = control()->newObjCForwardProtocolDeclaration(sourceLocation, protocolName); fwdProtocol->setStartOffset(tokenAt(ast->firstToken()).offset); - fwdProtocol->setEndOffset(tokenAt(ast->lastToken()).offset); + fwdProtocol->setEndOffset(tokenAt(ast->lastToken() - 1).end()); _scope->enterSymbol(fwdProtocol); @@ -597,7 +597,7 @@ bool CheckDeclaration::visit(ObjCProtocolDeclarationAST *ast) const Name *protocolName = semantic()->check(ast->name, _scope); ObjCProtocol *protocol = control()->newObjCProtocol(sourceLocation, protocolName); protocol->setStartOffset(tokenAt(ast->firstToken()).offset); - protocol->setEndOffset(tokenAt(ast->lastToken()).offset); + protocol->setEndOffset(tokenAt(ast->lastToken() - 1).end()); if (ast->protocol_refs && ast->protocol_refs->identifier_list) { for (NameListAST *iter = ast->protocol_refs->identifier_list; iter; iter = iter->next) { @@ -635,7 +635,7 @@ bool CheckDeclaration::visit(ObjCClassForwardDeclarationAST *ast) const Name *className = semantic()->check(it->value, _scope); ObjCForwardClassDeclaration *fwdClass = control()->newObjCForwardClassDeclaration(sourceLocation, className); fwdClass->setStartOffset(tokenAt(ast->firstToken()).offset); - fwdClass->setEndOffset(tokenAt(ast->lastToken()).offset); + fwdClass->setEndOffset(tokenAt(ast->lastToken() - 1).end()); _scope->enterSymbol(fwdClass); @@ -658,7 +658,7 @@ bool CheckDeclaration::visit(ObjCClassDeclarationAST *ast) const Name *className = semantic()->check(ast->class_name, _scope); ObjCClass *klass = control()->newObjCClass(sourceLocation, className); klass->setStartOffset(tokenAt(ast->firstToken()).offset); - klass->setEndOffset(tokenAt(ast->lastToken()).offset); + klass->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = klass; klass->setInterface(ast->interface_token != 0); @@ -733,7 +733,7 @@ bool CheckDeclaration::visit(ObjCMethodDeclarationAST *ast) } symbol->setStartOffset(tokenAt(ast->firstToken()).offset); - symbol->setEndOffset(tokenAt(ast->lastToken()).offset); + symbol->setEndOffset(tokenAt(ast->lastToken() - 1).end()); symbol->setVisibility(semantic()->currentObjCVisibility()); if (ty.isDeprecated()) symbol->setDeprecated(true); diff --git a/src/shared/cplusplus/CheckSpecifier.cpp b/src/shared/cplusplus/CheckSpecifier.cpp index ee390d285f6d37363dc8c09c164130454531c0bb..e35d1d193c15f081e2e5566b9b897c94360eb732 100644 --- a/src/shared/cplusplus/CheckSpecifier.cpp +++ b/src/shared/cplusplus/CheckSpecifier.cpp @@ -326,7 +326,7 @@ bool CheckSpecifier::visit(ClassSpecifierAST *ast) const Name *className = semantic()->check(ast->name, _scope); Class *klass = control()->newClass(sourceLocation, className); klass->setStartOffset(tokenAt(ast->firstToken()).offset); - klass->setEndOffset(tokenAt(ast->lastToken()).offset); + klass->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = klass; unsigned classKey = tokenKind(ast->classkey_token); if (classKey == T_CLASS) @@ -413,7 +413,7 @@ bool CheckSpecifier::visit(EnumSpecifierAST *ast) const Name *name = semantic()->check(ast->name, _scope); Enum *e = control()->newEnum(sourceLocation, name); e->setStartOffset(tokenAt(ast->firstToken()).offset); - e->setEndOffset(tokenAt(ast->lastToken()).offset); + e->setEndOffset(tokenAt(ast->lastToken() - 1).end()); e->setVisibility(semantic()->currentVisibility()); _scope->enterSymbol(e); _fullySpecifiedType.setType(e); diff --git a/src/shared/cplusplus/CheckStatement.cpp b/src/shared/cplusplus/CheckStatement.cpp index c476b2195dfe17c343bc3c0cd1241c36e3e0fd9e..da6c24cd1748e356cd4405b023597c8c9b5135ab 100644 --- a/src/shared/cplusplus/CheckStatement.cpp +++ b/src/shared/cplusplus/CheckStatement.cpp @@ -112,7 +112,7 @@ bool CheckStatement::visit(CompoundStatementAST *ast) { Block *block = control()->newBlock(ast->lbrace_token); block->setStartOffset(tokenAt(ast->firstToken()).offset); - block->setEndOffset(tokenAt(ast->lastToken()).offset); + block->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = block; _scope->enterSymbol(block); Scope *previousScope = switchScope(block->members()); @@ -177,7 +177,7 @@ bool CheckStatement::forEachFastEnum(unsigned firstToken, { Block *block = control()->newBlock(firstToken); block->setStartOffset(tokenAt(firstToken).offset); - block->setEndOffset(tokenAt(lastToken).offset); + block->setEndOffset(tokenAt(lastToken - 1).end()); symbol = block; _scope->enterSymbol(block); Scope *previousScope = switchScope(block->members()); @@ -230,7 +230,7 @@ bool CheckStatement::visit(ForStatementAST *ast) { Block *block = control()->newBlock(ast->for_token); block->setStartOffset(tokenAt(ast->firstToken()).offset); - block->setEndOffset(tokenAt(ast->lastToken()).offset); + block->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = block; _scope->enterSymbol(block); Scope *previousScope = switchScope(block->members()); @@ -247,7 +247,7 @@ bool CheckStatement::visit(IfStatementAST *ast) { Block *block = control()->newBlock(ast->if_token); block->setStartOffset(tokenAt(ast->firstToken()).offset); - block->setEndOffset(tokenAt(ast->lastToken()).offset); + block->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = block; _scope->enterSymbol(block); Scope *previousScope = switchScope(block->members()); @@ -294,7 +294,7 @@ bool CheckStatement::visit(SwitchStatementAST *ast) { Block *block = control()->newBlock(ast->switch_token); block->setStartOffset(tokenAt(ast->firstToken()).offset); - block->setEndOffset(tokenAt(ast->lastToken()).offset); + block->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = block; _scope->enterSymbol(block); Scope *previousScope = switchScope(block->members()); @@ -319,7 +319,7 @@ bool CheckStatement::visit(CatchClauseAST *ast) { Block *block = control()->newBlock(ast->catch_token); block->setStartOffset(tokenAt(ast->firstToken()).offset); - block->setEndOffset(tokenAt(ast->lastToken()).offset); + block->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = block; _scope->enterSymbol(block); Scope *previousScope = switchScope(block->members()); @@ -334,7 +334,7 @@ bool CheckStatement::visit(WhileStatementAST *ast) { Block *block = control()->newBlock(ast->while_token); block->setStartOffset(tokenAt(ast->firstToken()).offset); - block->setEndOffset(tokenAt(ast->lastToken()).offset); + block->setEndOffset(tokenAt(ast->lastToken() - 1).end()); ast->symbol = block; _scope->enterSymbol(block); Scope *previousScope = switchScope(block->members());