aboutsummaryrefslogtreecommitdiff
path: root/third_party/jacoco-make-probe-adapter-subclassable.patch
blob: 7e51195a6e00b5b6d7f71b7bd9782e3b2c7f2def (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// SPDX-License-Identifier: EPL-2.0 and Apache-2.0
// These patches apply to JaCoCo (https://github.com/jacoco/jacoco) and are hereby made available under the terms of the
// Eclipse Public License 2.0 available at:
//   http://www.eclipse.org/legal/epl-2.0
diff --git org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
index 0cc06ada..b65efb03 100644
--- org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
+++ org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
@@ -31,6 +31,8 @@ import org.jacoco.core.internal.analysis.ClassCoverageImpl;
 import org.jacoco.core.internal.analysis.StringPool;
 import org.jacoco.core.internal.data.CRC64;
 import org.jacoco.core.internal.flow.ClassProbesAdapter;
+import org.jacoco.core.internal.flow.ClassProbesVisitor;
+import org.jacoco.core.internal.flow.IClassProbesAdapterFactory;
 import org.jacoco.core.internal.instr.InstrSupport;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
@@ -52,6 +54,8 @@ public class Analyzer {
 
 	private final StringPool stringPool;
 
+	private final IClassProbesAdapterFactory classProbesAdapterFactory;
+
 	/**
 	 * Creates a new analyzer reporting to the given output.
 	 *
@@ -63,9 +67,21 @@ public class Analyzer {
 	 */
 	public Analyzer(final ExecutionDataStore executionData,
 			final ICoverageVisitor coverageVisitor) {
+		this(executionData, coverageVisitor, new IClassProbesAdapterFactory() {
+			@Override
+			public ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv, boolean trackFrames) {
+				return new ClassProbesAdapter(cv, trackFrames);
+			};
+		});
+	}
+
+	public Analyzer(final ExecutionDataStore executionData,
+			final ICoverageVisitor coverageVisitor,
+			final IClassProbesAdapterFactory classProbesAdapterFactory) {
 		this.executionData = executionData;
 		this.coverageVisitor = coverageVisitor;
 		this.stringPool = new StringPool();
+		this.classProbesAdapterFactory = classProbesAdapterFactory;
 	}
 
 	/**
@@ -99,7 +115,7 @@ public class Analyzer {
 				coverageVisitor.visitCoverage(coverage);
 			}
 		};
-		return new ClassProbesAdapter(analyzer, false);
+		return classProbesAdapterFactory.makeClassProbesAdapter(analyzer, false);
 	}
 
 	private void analyzeClass(final byte[] source) {
diff --git org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java
new file mode 100644
index 00000000..45fc2709
--- /dev/null
+++ org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java
@@ -0,0 +1,6 @@
+package org.jacoco.core.internal.flow;
+
+public interface IClassProbesAdapterFactory {
+	ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv,
+			boolean trackFrames);
+}