@@ -22,15 +22,16 @@ public static Optional<Semanticdb.Range> findRange(
2222 CompilationUnitTree root ,
2323 Element element ,
2424 int startPos ,
25- String source ) {
25+ String source ,
26+ boolean fromEnd ) {
2627 LineMap lineMap = root .getLineMap ();
2728 Name name = element .getSimpleName ();
2829 if (name .contentEquals ("<init>" )) name = element .getEnclosingElement ().getSimpleName ();
2930
3031 int endPos = (int ) trees .getSourcePositions ().getEndPosition (root , path .getLeaf ());
3132 // false for anonymous classes
3233 if (name .length () != 0 ) {
33- startPos = findNameIn (name , startPos , source );
34+ startPos = findNameIn (name , fromEnd ? endPos : startPos , source , fromEnd );
3435 endPos = startPos + name .length ();
3536 }
3637
@@ -48,10 +49,12 @@ public static Optional<Semanticdb.Range> findRange(
4849 return Optional .of (range );
4950 }
5051
51- private static int findNameIn (CharSequence name , int start , String source ) {
52+ private static int findNameIn (CharSequence name , int start , String source , boolean fromEnd ) {
5253 if (source .equals ("" )) return -1 ;
5354
54- int offset = source .indexOf (name .toString (), start );
55+ int offset ;
56+ if (fromEnd ) offset = source .lastIndexOf (name .toString (), start );
57+ else offset = source .indexOf (name .toString (), start );
5558 if (offset > -1 ) {
5659 return offset ;
5760 }
0 commit comments