OSDN Git Service

C++ function signature: Abort on unexpected function name.
authorChristian Kamm <christian.d.kamm@nokia.com>
Wed, 21 Sep 2011 12:39:48 +0000 (14:39 +0200)
committerChristian Kamm <christian.d.kamm@nokia.com>
Mon, 26 Sep 2011 10:45:47 +0000 (12:45 +0200)
Change-Id: Iaaa3907f709ea9ed567f59725399efd9024f3bc0
Reviewed-on: http://codereview.qt-project.org/5319
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
src/plugins/cppeditor/cppfunctiondecldeflink.cpp

index 9c5ef81..6873bbe 100644 (file)
@@ -510,15 +510,22 @@ Utils::ChangeSet FunctionDeclDefLink::changes(const Snapshot &snapshot, int targ
     if (!newFunction)
         return changes;
 
-    LookupContext sourceContext(sourceDocument, snapshot);
-    LookupContext targetContext(targetFile->cppDocument(), snapshot);
-
     Overview overview;
     overview.setShowReturnTypes(true);
     overview.setShowTemplateParameters(true);
     overview.setShowArgumentNames(true);
     overview.setShowFunctionSignatures(true);
 
+    // abort if the name of the newly parsed function is not the expected one
+    DeclaratorIdAST *newDeclId = getDeclaratorId(newDef->declarator);
+    if (!newDeclId || !newDeclId->name || !newDeclId->name->name
+            || overview(newDeclId->name->name) != nameInitial) {
+        return changes;
+    }
+
+    LookupContext sourceContext(sourceDocument, snapshot);
+    LookupContext targetContext(targetFile->cppDocument(), snapshot);
+
     // sync return type
     {
         // set up for rewriting return type