1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 23:05:47 +02:00

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
This commit is contained in:
Anton Leherbauer 2007-04-03 09:27:28 +00:00
parent d0015ae8c3
commit 8067e74e3f
2 changed files with 10 additions and 3 deletions

View file

@ -93,7 +93,7 @@ public class ClassTests extends PDOMTestBase {
assertEquals(offset("nested.cpp", "x.x") + 2, loc.getNodeOffset()); 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()); IBinding[] bindings = pdom.findBindings(Pattern.compile("pr147903"), false, new IndexFilter(), new NullProgressMonitor());
assertEquals(1, bindings.length); assertEquals(1, bindings.length);
ICPPNamespaceScope ns = ((ICPPNamespace)bindings[0]).getNamespaceScope(); ICPPNamespaceScope ns = ((ICPPNamespace)bindings[0]).getNamespaceScope();

View file

@ -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.ASTCompletionNode;
import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration; 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.IASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTBreakStatement; import org.eclipse.cdt.core.dom.ast.IASTBreakStatement;
import org.eclipse.cdt.core.dom.ast.IASTCaseStatement; import org.eclipse.cdt.core.dom.ast.IASTCaseStatement;
@ -1127,8 +1128,14 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
return; return;
if (flags.parm) { if (flags.parm) {
ASTNode name = (ASTNode) d.getName(); ASTNode name = (ASTNode) d.getName();
if (name.getOffset() == offset && name.getLength() == length) if (name.getOffset() == offset) {
return; // 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) { if (d.getInitializer() != null) {
ASTNode init = (ASTNode) d.getInitializer(); ASTNode init = (ASTNode) d.getInitializer();
if (name.getOffset() == offset if (name.getOffset() == offset