[
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$
+ }
}