List of usage examples for org.objectweb.asm Opcodes ACC_SYNTHETIC
int ACC_SYNTHETIC
To view the source code for org.objectweb.asm Opcodes ACC_SYNTHETIC.
Click Source Link
From source file:org.jacoco.core.internal.analysis.dua.DuaClassAnalyzer.java
License:Open Source License
public void analyze() { int methodId = 0; for (final MethodNode method : methods) { // Does not instrument: // 1. Abstract methods if ((method.access & Opcodes.ACC_ABSTRACT) != 0) { continue; }/*from w w w . ja v a 2s. co m*/ // 2. Interfaces if ((method.access & Opcodes.ACC_INTERFACE) != 0) { continue; } // 3. Synthetic methods if ((method.access & Opcodes.ACC_SYNTHETIC) != 0) { continue; } // 4. Static class initialization if (method.name.equals("<clinit>")) { continue; } visitMethod(method, methodId++); } }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilter.java
License:Open Source License
public void filter(final MethodNode methodNode, final IFilterContext context, final IFilterOutput output) { if ((methodNode.access & Opcodes.ACC_SYNTHETIC) == 0) { return;/*www. ja va 2 s . c o m*/ } if (!KotlinGeneratedFilter.isKotlinClass(context)) { return; } if (isDefaultArgumentsMethod(methodNode)) { new Matcher().match(methodNode, output, false); } else if (isDefaultArgumentsConstructor(methodNode)) { new Matcher().match(methodNode, output, true); } }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
@Test public void should_filter() { final MethodNode m = createMethod(Opcodes.ACC_SYNTHETIC, "origin$default", "(LTarget;IILjava/lang/Object;)V"); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); filter.filter(m, context, output);/*from ww w .j a va 2 s. c om*/ assertIgnored(new Range(m.instructions.get(3), m.instructions.get(3))); }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
@Test public void should_not_filter_when_not_kotlin() { final MethodNode m = createMethod(Opcodes.ACC_SYNTHETIC, "not_kotlin_synthetic$default", "(LTarget;IILjava/lang/Object;)V"); filter.filter(m, context, output);/*from www. j a v a2s. c o m*/ assertIgnored(); }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
@Test public void should_not_filter_when_suffix_absent() { final MethodNode m = createMethod(Opcodes.ACC_SYNTHETIC, "synthetic_without_suffix", "(LTarget;IILjava/lang/Object;)V"); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); filter.filter(m, context, output);// ww w . j ava 2s . com assertIgnored(); }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
/** * <pre>/*from w w w . java 2 s . c om*/ * open class Open { * open fun foo(a: Int = 42) { * } * } * </pre> */ @Test public void should_filter_open_functions() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "foo$default", "(LOpen;IILjava/lang/Object;)V", null, null); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); { m.visitVarInsn(Opcodes.ALOAD, 3); final Label label = new Label(); m.visitJumpInsn(Opcodes.IFNULL, label); m.visitTypeInsn(Opcodes.NEW, "java/lang/UnsupportedOperationException"); m.visitInsn(Opcodes.DUP); m.visitLdcInsn("Super calls with default arguments not supported in this target, function: foo"); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/UnsupportedOperationException", "<init>", "(Ljava/lang/String;)V", false); m.visitInsn(Opcodes.ATHROW); m.visitLabel(label); } { m.visitVarInsn(Opcodes.ILOAD, 2); m.visitInsn(Opcodes.ICONST_1); m.visitInsn(Opcodes.IAND); final Label label = new Label(); m.visitJumpInsn(Opcodes.IFEQ, label); // default argument m.visitLdcInsn(Integer.valueOf(42)); m.visitVarInsn(Opcodes.ISTORE, 1); m.visitLabel(label); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitVarInsn(Opcodes.ILOAD, 1); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "Open", "foo", "(I)V", false); m.visitInsn(Opcodes.RETURN); } filter.filter(m, context, output); assertIgnored(new Range(m.instructions.getFirst(), m.instructions.get(6)), new Range(m.instructions.get(11), m.instructions.get(11))); }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
/** * <pre>/*from w w w. j a v a 2s . c o m*/ * class C(a: Int = 42) * </pre> */ @Test public void should_filter_constructors() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "<init>", "(IILkotlin/jvm/internal/DefaultConstructorMarker;)V", null, null); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); m.visitVarInsn(Opcodes.ILOAD, 2); m.visitInsn(Opcodes.ICONST_1); m.visitInsn(Opcodes.IAND); Label label = new Label(); m.visitJumpInsn(Opcodes.IFEQ, label); // default argument m.visitLdcInsn(Integer.valueOf(42)); m.visitVarInsn(Opcodes.ISTORE, 1); m.visitLabel(label); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitVarInsn(Opcodes.ILOAD, 1); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "Owner", "<init>", "(I)V", false); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(new Range(m.instructions.get(3), m.instructions.get(3))); }
From source file:org.jacoco.core.internal.analysis.filter.KotlinDefaultArgumentsFilterTest.java
License:Open Source License
/** * <pre>/* ww w .j a va 2 s. c o m*/ * data class C(val x: Long = 42) * </pre> */ @Test public void should_filter_methods_with_parameters_that_consume_two_slots() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "<init>", "(JILkotlin/jvm/internal/DefaultConstructorMarker;)V", null, null); context.classAnnotations.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC); m.visitVarInsn(Opcodes.ILOAD, 3); m.visitInsn(Opcodes.ICONST_1); m.visitInsn(Opcodes.IAND); final Label label = new Label(); m.visitJumpInsn(Opcodes.IFEQ, label); // default argument m.visitLdcInsn(Integer.valueOf(42)); m.visitVarInsn(Opcodes.ISTORE, 1); m.visitLabel(label); m.visitVarInsn(Opcodes.ALOAD, 0); m.visitVarInsn(Opcodes.ILOAD, 1); m.visitMethodInsn(Opcodes.INVOKESPECIAL, "Owner", "<init>", "(J)V", false); m.visitInsn(Opcodes.RETURN); filter.filter(m, context, output); assertIgnored(new Range(m.instructions.get(3), m.instructions.get(3))); }
From source file:org.jacoco.core.internal.analysis.filter.SyntheticFilter.java
License:Open Source License
public void filter(final MethodNode methodNode, final IFilterContext context, final IFilterOutput output) { if ((methodNode.access & Opcodes.ACC_SYNTHETIC) == 0) { return;/*from w w w .ja va 2 s. com*/ } if (methodNode.name.startsWith("lambda$")) { return; } if (isScalaClass(context)) { if (methodNode.name.startsWith("$anonfun$")) { return; } } if (KotlinGeneratedFilter.isKotlinClass(context)) { if (KotlinDefaultArgumentsFilter.isDefaultArgumentsMethod(methodNode)) { return; } if (KotlinDefaultArgumentsFilter.isDefaultArgumentsConstructor(methodNode)) { return; } if (KotlinCoroutineFilter.isLastArgumentContinuation(methodNode)) { return; } } output.ignore(methodNode.instructions.getFirst(), methodNode.instructions.getLast()); }
From source file:org.jacoco.core.internal.analysis.filter.SyntheticFilterTest.java
License:Open Source License
@Test public void testSynthetic() { final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION, Opcodes.ACC_SYNTHETIC, "name", "()V", null, null);//from w ww.ja v a 2 s . c om m.visitInsn(Opcodes.NOP); filter.filter(m, context, output); assertMethodIgnored(m); }