From b7745b5167ab7d65f2c8e91e27b7aa1fde6ed0ee Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Wed, 1 Jun 2005 19:29:12 +0000 Subject: [PATCH] fix NPE bug 97447 --- .../cdt/core/parser/tests/ast2/AST2KnRTests.java | 13 +++++++++++++ .../cdt/internal/core/dom/parser/c/CFunction.java | 1 + 2 files changed, 14 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java index c6b3f14216e..422c448ef03 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2KnRTests.java @@ -651,4 +651,17 @@ public class AST2KnRTests extends AST2BaseTest { assertEquals( lemp_name3.resolveBinding(), lemp_name4.resolveBinding() ); } + public void testBug97447() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("void f( a ) int a; {} \n"); + buffer.append("void f( int ); \n"); + + IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.C, true); + CNameCollector col = new CNameCollector(); + tu.accept(col); + + IFunction def = (IFunction) col.getName(0).resolveBinding(); + IFunction f1 = (IFunction) col.getName(3).resolveBinding(); + IParameter a = (IParameter) col.getName(4).resolveBinding(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java index 2b5354347fe..586e073a96e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/CFunction.java @@ -232,6 +232,7 @@ public class CFunction implements IFunction, ICInternalBinding { temp = ((IASTStandardFunctionDeclarator)definition).getParameters()[idx]; temp.getDeclarator().getName().setBinding( binding ); } else if( definition instanceof ICASTKnRFunctionDeclarator ){ + fKnRDtor = (ICASTKnRFunctionDeclarator) definition; IASTName n = fKnRDtor.getParameterNames()[idx]; n.setBinding( binding ); IASTDeclarator dtor = CVisitor.getKnRParameterDeclarator( fKnRDtor, n );