From 9cef992b8e71a28b693100e991ab96405f5c31b6 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 30 Sep 2003 14:10:28 +0000 Subject: [PATCH] Patch for Andrew Niefer Core: -bug42911 - Search: cannot find beyond use of data member - fix NPE's in BasicSearchMatch.equals & hashCode TESTS: -added testBug42911 to OtherPatternTests --- core/org.eclipse.cdt.core.tests/ChangeLog | 3 +++ .../core/search/tests/OtherPatternTests.java | 17 +++++++++++++++++ core/org.eclipse.cdt.core/search/ChangeLog | 4 ++++ .../cdt/core/search/BasicSearchMatch.java | 18 ++++++++++++++---- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 9b55a66e435..1369cd845d2 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -8,6 +8,9 @@ -Renamed FailedCompleteParseASTExpressionTest to FailedCompleteParseASTTest -Added FailedCompleteParseASTTest::testBug43503() +2003-09-29 Andrew Niefer + added testBug42911 to OtherPatternTests + 2003-09-29 Andrew Niefer added testbug43834() to ParserSymbolTableTest diff --git a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java index 46ef3edbc39..2eb2c4b1ff5 100644 --- a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java +++ b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java @@ -17,6 +17,7 @@ import java.util.Iterator; import java.util.Set; import java.util.TreeSet; +import org.eclipse.cdt.core.search.BasicSearchMatch; import org.eclipse.cdt.core.search.ICSearchPattern; import org.eclipse.cdt.core.search.IMatch; import org.eclipse.cdt.core.search.SearchEngine; @@ -323,4 +324,20 @@ public class OtherPatternTests extends BaseSearchTest { Set matches = resultCollector.getSearchResults(); assertEquals( matches.size(), 4 ); } + + public void testBug42911(){ + BasicSearchMatch match1 = new BasicSearchMatch(); + BasicSearchMatch match2 = new BasicSearchMatch(); + + assertTrue( match1.equals( match2 ) ); + assertTrue( match2.equals( match1 ) ); + + match1.setName( "IWasSaying" ); + match1.setParentName( "boo" ); + match1.setReturnType( "urns" ); + + assertFalse( match1.equals( match2 ) ); + assertFalse( match2.equals( match1 ) ); + + } } diff --git a/core/org.eclipse.cdt.core/search/ChangeLog b/core/org.eclipse.cdt.core/search/ChangeLog index ed5d7e28f7e..434e2d6a0fd 100644 --- a/core/org.eclipse.cdt.core/search/ChangeLog +++ b/core/org.eclipse.cdt.core/search/ChangeLog @@ -3,6 +3,10 @@ - modify CSearchPattern.scanForNames to use same naming convention as TokenDuple.toString() - modify MatchLocator.report to use IASTOffsetableNamedElement.getNameEndOffset() +2003-09-29 Andrew Niefer + -bug42911 - Search: cannot find beyond use of data member + - fix NPE's in BasicSearchMatch.equals & hashCode + 2003-09-29 Andrew Niefer -fix NPE if IScannerInfoProvider returns null IScannerInfo diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/BasicSearchMatch.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/BasicSearchMatch.java index 11f1bd34e6d..3c27aa0c6f7 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/BasicSearchMatch.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/BasicSearchMatch.java @@ -43,7 +43,10 @@ public class BasicSearchMatch implements IMatch, Comparable { hashString += name; hashString += ":" + parentName; hashString += ":" + returnType; - hashString += ":" + getLocation().toString(); + + if( getLocation() != null) + hashString += ":" + getLocation().toString(); + hashString += ":" + startOffset + ":" + endOffset; hashString += ":" + type + ":" + visibility; @@ -64,9 +67,16 @@ public class BasicSearchMatch implements IMatch, Comparable { if( type != match.getElementType() || visibility != match.getVisibility() ) return false; - if( !name.equals( match.getName() ) - || !parentName.equals( match.getParentName() ) - || !returnType.equals( match.getReturnType() ) ) + if( ( name != null && match.getName() != null && !name.equals( match.getName() ) ) + || name != match.getName() ) + return false; + + if( ( parentName != null && match.getParentName() != null && !parentName.equals( match.getParentName() ) ) + || parentName != match.getParentName() ) + return false; + + if( ( returnType != null && match.getReturnType() != null && !returnType.equals( match.getReturnType() ) ) + || returnType != match.getReturnType() ) return false; IPath thisPath = getLocation();