Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] [FIXED][76685] Outline view doesn't expand no param macros correctly


[FIXED][76685] Outline view doesn't expand no param macros correctly

Here is a better patch for 76685... It is a 2.0 patch that fixes this bug the same way the fix was applied to CVS Head/AST2.

Devin Steffler
IBM's Eclipse CDT
Ottawa (Palladium), Ontario, Canada


Index: parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java,v
retrieving revision 1.15.2.16
diff -u -r1.15.2.16 Scanner2.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java	8 Oct 2004 20:29:01 -0000	1.15.2.16
+++ parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java	25 Oct 2004 15:51:11 -0000
@@ -2245,12 +2245,6 @@
 		CharArrayObjectMap argmap = new CharArrayObjectMap(arglist.length);
 		
 		while (bufferPos[bufferStackPos] < limit) {
-			if (++currarg >= arglist.length || arglist[currarg] == null){
-				// too many args
-			    handleProblem( IProblem.PREPROCESSOR_MACRO_USAGE_ERROR, bufferPos[bufferStackPos], macro.name );
-				break;
-			}
-
 			skipOverWhiteSpace();
 			
 			int pos = ++bufferPos[bufferStackPos];
@@ -2264,6 +2258,12 @@
 				continue;
 			}
 			
+			if (++currarg >= arglist.length || arglist[currarg] == null){
+				// too many args
+			    handleProblem( IProblem.PREPROCESSOR_MACRO_USAGE_ERROR, bufferPos[bufferStackPos], macro.name );
+				break;
+			}
+
 			// peel off the arg
 			--bufferPos[bufferStackPos];
 			int argend = bufferPos[bufferStackPos];
Index: parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java,v
retrieving revision 1.107.2.6
diff -u -r1.107.2.6 CompleteParseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java	5 Oct 2004 18:51:46 -0000	1.107.2.6
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java	25 Oct 2004 15:51:25 -0000
@@ -2121,4 +2121,12 @@
 		IASTTypeId typeId = (IASTTypeId) typeIds.next();
 		assertEquals(typeId.getTypeOrClassName(), "Thrown");
 	}
+    
+    public void testBug76685() throws Exception
+	{
+    	Writer writer = new StringWriter();
+    	writer.write( "#define foo() int\n" );
+    	writer.write( "foo() i;" );
+    	parse( writer.toString() );
+	}
 }

Back to the top