Index: src/test/org/apache/lucene/index/TestTerm.java =================================================================== --- src/test/org/apache/lucene/index/TestTerm.java (revision 0) +++ src/test/org/apache/lucene/index/TestTerm.java (revision 0) @@ -0,0 +1,19 @@ +package org.apache.lucene.index; + +import junit.framework.TestCase; + +public class TestTerm extends TestCase { + + public void testEquals() { + final Term base = new Term("same", "same"); + final Term same = new Term("same", "same"); + final Term differentField = new Term("different", "same"); + final Term differentText = new Term("same", "different"); + final String differentType = "AString"; + assertEquals(base, base); + assertEquals(base, same); + assertFalse(base.equals(differentField)); + assertFalse(base.equals(differentText)); + assertFalse(base.equals(differentType)); + } +} Index: src/java/org/apache/lucene/index/Term.java =================================================================== --- src/java/org/apache/lucene/index/Term.java (revision 515924) +++ src/java/org/apache/lucene/index/Term.java (working copy) @@ -63,8 +63,12 @@ /** Compares two terms, returning true iff they have the same field and text. */ public final boolean equals(Object o) { + if (o == this) + return true; if (o == null) return false; + if (!(o instanceof Term)) + return false; Term other = (Term)o; return field == other.field && text.equals(other.text); }