From 107544bd7b91725f11ad794f46eb1ba93b738b6f Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Thu, 8 Sep 2011 08:49:01 +0200
Subject: [PATCH] C++: Set endOffset of Function symbols even if skipping
 bodies.

Fixes insert-definition-from-declaration when the source file was not
yet opened in an editor.

Change-Id: I4263113390ae4fbe9d4641104b5cb43373ddc5a4
Reviewed-on: http://codereview.qt-project.org/4394
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
---
 src/libs/3rdparty/cplusplus/Bind.cpp           | 7 +------
 src/plugins/cpptools/insertionpointlocator.cpp | 1 -
 2 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp
index 89ae4015da7..2da94f4b313 100644
--- a/src/libs/3rdparty/cplusplus/Bind.cpp
+++ b/src/libs/3rdparty/cplusplus/Bind.cpp
@@ -2007,6 +2007,7 @@ bool Bind::visit(FunctionDefinitionAST *ast)
 
     if (fun) {
         setDeclSpecifiers(fun, declSpecifiers);
+        fun->setEndOffset(tokenAt(ast->lastToken() - 1).end());
 
         if (_scope->isClass()) {
             fun->setVisibility(_visibility);
@@ -2028,12 +2029,6 @@ bool Bind::visit(FunctionDefinitionAST *ast)
         Scope *previousScope = switchScope(fun);
         this->statement(ast->function_body);
         (void) switchScope(previousScope);
-
-        if (CompoundStatementAST *c = ast->function_body->asCompoundStatement()) {
-            if (c->symbol) {
-                fun->setEndOffset(c->symbol->endOffset());
-            }
-        }
     }
 
     return false;
diff --git a/src/plugins/cpptools/insertionpointlocator.cpp b/src/plugins/cpptools/insertionpointlocator.cpp
index 3cd40271448..cee3784433c 100644
--- a/src/plugins/cpptools/insertionpointlocator.cpp
+++ b/src/plugins/cpptools/insertionpointlocator.cpp
@@ -548,7 +548,6 @@ static InsertionLocation nextToSurroundingDefinitions(Declaration *declaration,
     return InsertionLocation(definition->fileName(), prefix, suffix, line, column);
 }
 
-/// Currently, we return the end of fileName.cpp
 QList<InsertionLocation> InsertionPointLocator::methodDefinition(
     Declaration *declaration) const
 {
-- 
GitLab