aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.core/src/org/jacoco/core/internal/analysis
diff options
context:
space:
mode:
authorEvgeny Mandrikov <138671+Godin@users.noreply.github.com>2020-02-02 01:29:36 +0200
committerGitHub <noreply@github.com>2020-02-02 00:29:36 +0100
commit468fa9942e8f72df3e5fba5f0065ef4859e09fd8 (patch)
treec676b9b081f9f9faff9864fd375c2a23cbe1c64f /org.jacoco.core/src/org/jacoco/core/internal/analysis
parentd013ac8700e0e4d14eb13eddf063cfcfbad0669c (diff)
downloadjacoco-468fa9942e8f72df3e5fba5f0065ef4859e09fd8.tar.gz
Add filter for bridge methods (#1010)
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/BridgeFilter.java32
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/Filters.java3
2 files changed, 34 insertions, 1 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/BridgeFilter.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/BridgeFilter.java
new file mode 100644
index 00000000..78fe5ad6
--- /dev/null
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/BridgeFilter.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2020 Mountainminds GmbH & Co. KG and Contributors
+ * This program and the accompanying materials are made available under
+ * the terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Evgeny Mandrikov - initial API and implementation
+ *
+ *******************************************************************************/
+package org.jacoco.core.internal.analysis.filter;
+
+import org.objectweb.asm.Opcodes;
+import org.objectweb.asm.tree.MethodNode;
+
+/**
+ * Filters bridge methods.
+ */
+final class BridgeFilter implements IFilter {
+
+ public void filter(final MethodNode methodNode,
+ final IFilterContext context, final IFilterOutput output) {
+ if ((methodNode.access & Opcodes.ACC_BRIDGE) == 0) {
+ return;
+ }
+ output.ignore(methodNode.instructions.getFirst(),
+ methodNode.instructions.getLast());
+ }
+
+}
diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/Filters.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/Filters.java
index 3ceff7bf..bbe041f6 100644
--- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/Filters.java
+++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/Filters.java
@@ -33,7 +33,8 @@ public final class Filters implements IFilter {
*/
public static IFilter all() {
return new Filters(new EnumFilter(), new SyntheticFilter(),
- new SynchronizedFilter(), new TryWithResourcesJavac11Filter(),
+ new BridgeFilter(), new SynchronizedFilter(),
+ new TryWithResourcesJavac11Filter(),
new TryWithResourcesJavacFilter(),
new TryWithResourcesEcjFilter(), new FinallyFilter(),
new PrivateEmptyNoArgConstructorFilter(),