diff options
author | Evgeny Mandrikov <Godin@users.noreply.github.com> | 2018-08-20 19:53:21 +0200 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2018-08-20 19:53:21 +0200 |
commit | 964778bb48e3bbc63f5e9b174e7af371aa1f05ae (patch) | |
tree | f59d2e6cd2c435e2df4ceb3fc97568a30c96a14e /org.jacoco.core/src/org/jacoco/core/internal/analysis | |
parent | 6bbb012ddb61ee25c67c1ec166535f84c2f7d085 (diff) | |
download | jacoco-964778bb48e3bbc63f5e9b174e7af371aa1f05ae.tar.gz |
StringSwitchEcjFilter and KotlinWhenStringFilter should use correct VarInsnNode (#746)
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/KotlinWhenStringFilter.java | 8 | ||||
-rw-r--r-- | org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java | 7 |
2 files changed, 10 insertions, 5 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java index 861c7bfb..b8694c24 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/KotlinWhenStringFilter.java @@ -21,6 +21,7 @@ import org.objectweb.asm.tree.LabelNode; import org.objectweb.asm.tree.LookupSwitchInsnNode; import org.objectweb.asm.tree.MethodNode; import org.objectweb.asm.tree.TableSwitchInsnNode; +import org.objectweb.asm.tree.VarInsnNode; /** * Filters bytecode that Kotlin compiler generates for <code>when</code> @@ -41,15 +42,16 @@ public final class KotlinWhenStringFilter implements IFilter { public void match(final AbstractInsnNode start, final IFilterOutput output) { + if (Opcodes.ALOAD != start.getOpcode()) { + return; + } cursor = start; - - nextIsVar(Opcodes.ASTORE, "s"); - nextIsVar(Opcodes.ALOAD, "s"); nextIsInvokeVirtual("java/lang/String", "hashCode"); nextIsSwitch(); if (cursor == null) { return; } + vars.put("s", (VarInsnNode) start); final AbstractInsnNode s = cursor; final int hashCodes; diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java index d4be1819..6c52d3b9 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/StringSwitchEcjFilter.java @@ -21,6 +21,7 @@ import org.objectweb.asm.tree.LabelNode; import org.objectweb.asm.tree.LookupSwitchInsnNode; import org.objectweb.asm.tree.MethodNode; import org.objectweb.asm.tree.TableSwitchInsnNode; +import org.objectweb.asm.tree.VarInsnNode; /** * Filters code that is generated by ECJ for a <code>switch</code> statement @@ -41,14 +42,16 @@ public final class StringSwitchEcjFilter implements IFilter { public void match(final AbstractInsnNode start, final IFilterOutput output) { + if (Opcodes.ASTORE != start.getOpcode()) { + return; + } cursor = start; - - nextIsVar(Opcodes.ASTORE, "s"); nextIsInvokeVirtual("java/lang/String", "hashCode"); nextIsSwitch(); if (cursor == null) { return; } + vars.put("s", (VarInsnNode) start); final AbstractInsnNode s = cursor; final int hashCodes; |