Fix callOriginal on default interface method #1203
Merged
+161
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue: #64
The Kotlin compiler generates an additional class that contains an implementation of a default method as a static member. This method will always be intercepted by InterceptNoSuper since it doesn't have a
@SuperCall
.Reference:
mockk/modules/mockk-agent/src/jvmMain/java/io/mockk/proxy/jvm/advice/jvm/JvmMockKProxyInterceptor.java
Lines 34 to 38 in ef56926
To determine whether the method is a default interface method or not, I have implemented a new utility class named DefaultInterfaceMethodResolver.
This class attempts to find the DefaultImpls class and then the default method.