Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] [FIXED] 72710 [Search] Field Reference incorrectly reported as variable ref


[FIXED] 72710 [Search] Field Reference incorrectly reported as variable ref

Here's a better patch for 72710 with a corresponding test.

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


Index: parser/org/eclipse/cdt/internal/core/parser/token/AbstractToken.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/token/AbstractToken.java,v
retrieving revision 1.13
diff -u -r1.13 AbstractToken.java
--- parser/org/eclipse/cdt/internal/core/parser/token/AbstractToken.java	7 Sep 2004 18:56:39 -0000	1.13
+++ parser/org/eclipse/cdt/internal/core/parser/token/AbstractToken.java	7 Oct 2004 13:06:32 -0000
@@ -82,6 +82,10 @@
 			return false;
 		if( !CharArrayUtils.equals( ((IToken)other).getCharImage(), getCharImage() ) ) 
 			return false;
+		if( getOffset() != ((IToken)other).getOffset() )
+			return false;
+		if( getEndOffset() != ((IToken)other).getEndOffset() )
+			return false;
 		return true;
 	}
 
Index: parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java,v
retrieving revision 1.31
diff -u -r1.31 SelectionParseTest.java
--- parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java	30 Sep 2004 21:18:54 -0000	1.31
+++ parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java	7 Oct 2004 13:06:52 -0000
@@ -498,5 +498,23 @@
 	    assertTrue( node instanceof IASTClassSpecifier );
 	    assertEquals( ((IASTClassSpecifier)node).getName(), "AAA" ); //$NON-NLS-1$
 	}
+	
+	public void testBug72710() throws Exception
+	{
+		Writer writer = new StringWriter();
+		writer.write( "class Card{\n" ); //$NON-NLS-1$
+		writer.write( "	Card( int rank );\n" ); //$NON-NLS-1$
+		writer.write( " int rank;\n" ); //$NON-NLS-1$
+		writer.write( "};\n" ); //$NON-NLS-1$
+		writer.write( "Card::Card( int rank ) {\n" ); //$NON-NLS-1$
+		writer.write( "this->rank = rank;\n" ); //$NON-NLS-1$
+		writer.write( "}\n" ); //$NON-NLS-1$
+		String code = writer.toString();
+		int index = code.indexOf( "this->rank") + 6; //$NON-NLS-1$
+		IASTNode node = parse( code, index, index + 4 );
+		assertTrue( node instanceof IASTField );
+		IASTField rank = (IASTField) node;
+		assertEquals( rank.getName(), "rank"); //$NON-NLS-1$
+	}
 }
 

Back to the top