From 8067e74e3f81892560926c840f891655f24316d2 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Tue, 3 Apr 2007 09:27:28 +0000 Subject: [PATCH] Fix for 179493: CModelBuilder2 does not build model correctly for function pointer with array parameter and 147903: Search for references broken for unnamed parameters with array notation --- .../eclipse/cdt/internal/pdom/tests/ClassTests.java | 2 +- .../core/dom/parser/AbstractGNUSourceCodeParser.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java index ed8bf77fcde..3a37289eba8 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java @@ -93,7 +93,7 @@ public class ClassTests extends PDOMTestBase { assertEquals(offset("nested.cpp", "x.x") + 2, loc.getNodeOffset()); } - public void failedTest147903() throws Exception { + public void test147903() throws Exception { IBinding[] bindings = pdom.findBindings(Pattern.compile("pr147903"), false, new IndexFilter(), new NullProgressMonitor()); assertEquals(1, bindings.length); ICPPNamespaceScope ns = ((ICPPNamespace)bindings[0]).getNamespaceScope(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java index ac48f4cd9bf..c6da3560de0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java @@ -15,6 +15,7 @@ package org.eclipse.cdt.internal.core.dom.parser; import org.eclipse.cdt.core.dom.ast.ASTCompletionNode; import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration; +import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator; import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.IASTBreakStatement; import org.eclipse.cdt.core.dom.ast.IASTCaseStatement; @@ -1127,8 +1128,14 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { return; if (flags.parm) { ASTNode name = (ASTNode) d.getName(); - if (name.getOffset() == offset && name.getLength() == length) - return; + if (name.getOffset() == offset) { + // fix for bugs 147903 and 179493 + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=147903 + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=179493 + if (name.getLength() == length || d instanceof IASTArrayDeclarator) { + return; + } + } if (d.getInitializer() != null) { ASTNode init = (ASTNode) d.getInitializer(); if (name.getOffset() == offset