GT-3620 SymbolPathParser review fix

This commit is contained in:
ghizard 2020-03-27 11:26:39 -04:00
parent dde3f4aa8c
commit 4478f85650
2 changed files with 19 additions and 3 deletions

View file

@ -73,7 +73,7 @@ public class SymbolPathParser {
if (endIndex > startIndex) {
list.add(name.substring(startIndex, endIndex));
startIndex = i + 2;
i++; // Only increment one, because the loop also has in increment.
i++; // Only increment one, because the loop also has an increment.
}
}
}
@ -100,8 +100,8 @@ public class SymbolPathParser {
int endIndex = i; // could be 0 if i == 0.
if (endIndex > startIndex) {
list.add(name.substring(startIndex, endIndex));
i += 2;
startIndex = i;
startIndex = i + 2;
i++; // Only increment one, because the loop also has an increment.
}
}
}

View file

@ -130,4 +130,20 @@ public class SymbolPathParserTest extends AbstractGTest {
assertListEqualOrdered(expected, list);
}
@Test
public void testUnmatchedAngleBracketFallback1() {
// Contrived example to test naive parsing going into fallback mode due to unmatched
// angle brackets. The expected result here is not an accurate result that we would
// expect from a more sophisticated parser.
String name = "A::operator<=::B<C<int>::<unnamed-tag>>::E";
List<String> list = SymbolPathParser.parse(name);
List<String> expected = new ArrayList<>();
expected.add("A");
expected.add("operator<=");
expected.add("B<C<int>");
expected.add("<unnamed-tag>>");
expected.add("E");
assertListEqualOrdered(expected, list);
}
}