[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] [FIXED][71317][Parser] invalid overload of the name
|
[FIXED][71317][Parser] invalid overload
of the name
Devin Steffler
IBM's Eclipse CDT
Ottawa (Palladium), Ontario, Canada
Index: parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java,v
retrieving revision 1.135
diff -u -r1.135 CompleteParseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 18 Nov 2004 14:34:36 -0000 1.135
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 18 Nov 2004 18:34:15 -0000
@@ -2341,5 +2341,14 @@
writer.write("temp = (TYPE*)(pType + 1); /* Parser error is here */\n}\n"); //$NON-NLS-1$
parse(writer.toString());
}
+
+ public void testBug71317() throws Exception {
+ Writer writer = new StringWriter();
+ writer.write("int foo(int);\n"); //$NON-NLS-1$
+ writer.write("namespace NS {\n"); //$NON-NLS-1$
+ writer.write("int foo(int);\n"); //$NON-NLS-1$
+ writer.write("using ::foo;\n}"); //$NON-NLS-1$
+ parse(writer.toString());
+ }
}
Index: parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java,v
retrieving revision 1.93
diff -u -r1.93 ParserSymbolTable.java
--- parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java 16 Nov 2004 20:06:20 -0000 1.93
+++ parser/org/eclipse/cdt/internal/core/parser/pst/ParserSymbolTable.java 18 Nov 2004 18:30:18 -0000
@@ -939,6 +939,11 @@
return true;
}
+ // fix 71317, see C++ spec 7.3.3-11
+ if (newSymbol.isForwardDeclaration() && newSymbol.getForwardSymbol() != null && newSymbol.getContainingSymbol() == origSymbol.getContainingSymbol() && newSymbol.getForwardSymbol().getContainingSymbol() != newSymbol.getContainingSymbol()) {
+ return true;
+ }
+
return false;
}