org.jacoco.core.internal.analysis.filter
Class KotlinDefaultArgumentsFilter
java.lang.Object
org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilter
- All Implemented Interfaces:
- IFilter
public final class KotlinDefaultArgumentsFilter
- extends Object
- implements IFilter
Filters branches that Kotlin compiler generates for default arguments.
For methods and constructors with default arguments Kotlin compiler generates
synthetic method with suffix "$default" or a synthetic constructor with last
argument "kotlin.jvm.internal.DefaultConstructorMarker" respectively. And in
this synthetic method for each default argument Kotlin compiler generates
following bytecode to determine if it should be used or not:
ILOAD maskVar
ICONST_x, BIPUSH, SIPUSH, LDC or LDC_W
IAND
IFEQ label
default argument
label:
If original method has X arguments, then in synthetic method
maskVar is one of arguments from X+1 to
X+1+(X/32).
At least one of such arguments is not zero - invocation without default
arguments uses original non synthetic method.
This filter marks IFEQ instructions as ignored.
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
KotlinDefaultArgumentsFilter
public KotlinDefaultArgumentsFilter()
filter
public void filter(org.objectweb.asm.tree.MethodNode methodNode,
IFilterContext context,
IFilterOutput output)
- Description copied from interface:
IFilter
- This method is called for every method. The filter implementation is
expected to inspect the provided method and report its result to the
given
IFilterOutput instance.
- Specified by:
filter in interface IFilter
- Parameters:
methodNode - method to inspectcontext - context information for the methodoutput - callback to report filtering results to
Copyright © 2009–2024 Mountainminds GmbH & Co. KG. All rights reserved.