Skip to content

Commit

Permalink
(WIP) add unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
Godin committed Apr 12, 2021
1 parent b68fe1a commit a875c82
Showing 1 changed file with 43 additions and 0 deletions.
Expand Up @@ -130,6 +130,17 @@ public void should_not_filter_synthetic_constructor_containing_default_arguments
assertIgnored();
}

/**
* For private suspending function Kotlin compiler versions prior to 1.5
* produce package-local synthetic method that should not be filtered
*
* <pre>
* private suspend fun example() {
* }
* </pre>
*
* @see #should_filter_synthetic_methods_whose_name_starts_with_access_dollar_even_if_last_argument_is_kotlin_coroutine_continuation()
*/
@Test
public void should_not_filter_synthetic_methods_whose_last_argument_is_kotlin_coroutine_continuation() {
final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION,
Expand All @@ -145,4 +156,36 @@ public void should_not_filter_synthetic_methods_whose_last_argument_is_kotlin_co
assertIgnored();
}

/**
* For private suspending function Kotlin compiler versions starting from
* 1.5 produce additional public synthetic method with name starting with
* "access$" that should be filtered
*
* <pre>
* private suspend fun example() {
* }
* </pre>
*
* @see #should_not_filter_synthetic_methods_whose_last_argument_is_kotlin_coroutine_continuation()
*/
@Test
public void should_filter_synthetic_methods_whose_name_starts_with_access_dollar_even_if_last_argument_is_kotlin_coroutine_continuation() {
final MethodNode m = new MethodNode(InstrSupport.ASM_API_VERSION,
Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_FINAL
| Opcodes.ACC_SYNTHETIC,
"access$example",
"(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", null,
null);
context.classAnnotations
.add(KotlinGeneratedFilter.KOTLIN_METADATA_DESC);
m.visitVarInsn(Opcodes.ALOAD, 0);
m.visitMethodInsn(Opcodes.INVOKESTATIC, "ExampleKt", "example",
"(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", false);
m.visitInsn(Opcodes.RETURN);

filter.filter(m, context, output);

assertMethodIgnored(m);
}

}

0 comments on commit a875c82

Please sign in to comment.