Skip to main content

[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;
 		}
 		

Back to the top