diff options
author | Evgeny Mandrikov <Godin@users.noreply.github.com> | 2018-08-13 22:23:21 +0200 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2018-08-13 22:23:21 +0200 |
commit | aa778680a3adc19eb59a1c96b570d9d1fe4a8145 (patch) | |
tree | 6369982de88595145ae20a317a9406c0b11493ce /org.jacoco.core/src/org/jacoco/core/internal/analysis | |
parent | 90af0853aed1cf9290acb81ed0cde1699cc00718 (diff) | |
download | jacoco-aa778680a3adc19eb59a1c96b570d9d1fe4a8145.tar.gz |
Filter switch on String that javac compiles into lookupswitch (#730)
Diffstat (limited to 'org.jacoco.core/src/org/jacoco/core/internal/analysis')
-rw-r--r-- | org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java | 19 | ||||
-rw-r--r-- | org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java | 3 |
2 files changed, 21 insertions, 1 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java index 9e07153b..9b01e777 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java @@ -111,6 +111,25 @@ abstract class AbstractMatcher { } /** + * Moves {@link #cursor} to next instruction if it is + * <code>TABLESWITCH</code> or <code>LOOKUPSWITCH</code>, otherwise sets it + * to <code>null</code>. + */ + final void nextIsSwitch() { + next(); + if (cursor == null) { + return; + } + switch (cursor.getOpcode()) { + case Opcodes.TABLESWITCH: + case Opcodes.LOOKUPSWITCH: + return; + default: + cursor = null; + } + } + + /** * Moves {@link #cursor} to next instruction if it has given opcode, * otherwise sets it to <code>null</code>. */ diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java index c61bc752..72b5f536 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchJavacFilter.java @@ -91,7 +91,8 @@ public final class StringSwitchJavacFilter implements IFilter { } } nextIsVar(Opcodes.ILOAD, "c"); - nextIs(Opcodes.TABLESWITCH); + // Can be TABLESWITCH or LOOKUPSWITCH depending on number of cases + nextIsSwitch(); return cursor != null; } } |