Remove StorageComponentContainerContributor::onContainerComposed
Rename addDeclarations -> registerModuleComponents
Use it to provide SamWithReceiverResolver extensions instead
Post construction on container composition can be achieved
but manually inserting injections where it seems appropriate
is bug prone
This fixes a bug where SamWithReceiverPlugin extension was not registered
for some containers in IDE which led to incorrect highlighting in IDE
Add IDE test for applying SamWithReceiver plugin
#KT-18062 Fixed
This commit is contained in:
+4
@@ -0,0 +1,4 @@
|
||||
package anno
|
||||
|
||||
annotation class A
|
||||
annotation class B
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package javaInterface;
|
||||
|
||||
public class API {
|
||||
public <T> void useM1A(InterfaceM1A<T> m1A);
|
||||
public <G> void useM1B(InterfaceM1B<G> m1B);
|
||||
public <T> void useM2A(InterfaceM2A<T> m1A);
|
||||
public <G> void useM2B(InterfaceM2B<G> m1B);
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
package javaInterface;
|
||||
|
||||
@anno.A
|
||||
interface InterfaceM1A<T> {
|
||||
void foo(T t);
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
package javaInterface;
|
||||
|
||||
@anno.B
|
||||
interface InterfaceM1B<T> {
|
||||
void foo(T t);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package m1
|
||||
|
||||
public fun testUseAsReceiver(api: javaInterface.API) {
|
||||
api.useM1A<String> {
|
||||
this.length
|
||||
}
|
||||
api.useM1B<String> {
|
||||
<error>this</error>.length
|
||||
}
|
||||
api.useM2A<String> {
|
||||
this.length
|
||||
}
|
||||
api.useM2B<String> {
|
||||
<error>this</error>.length
|
||||
}
|
||||
}
|
||||
|
||||
public fun testUseAsParameter(api: javaInterface.API) {
|
||||
api.useM1A<String> {
|
||||
<error>it</error>.length
|
||||
}
|
||||
api.useM1B<String> {
|
||||
it.length
|
||||
}
|
||||
api.useM2A<String> {
|
||||
<error>it</error>.length
|
||||
}
|
||||
api.useM2B<String> {
|
||||
it.length
|
||||
}
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
package javaInterface;
|
||||
|
||||
@anno.A
|
||||
interface InterfaceM2A<T> {
|
||||
void foo(T t);
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
package javaInterface;
|
||||
|
||||
@anno.B
|
||||
interface InterfaceM2B<T> {
|
||||
void foo(T t);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package m2
|
||||
|
||||
public fun testUseAsReceiver(api: javaInterface.API) {
|
||||
api.useM1A<String> {
|
||||
<error>this</error>.length
|
||||
}
|
||||
api.useM1B<String> {
|
||||
this.length
|
||||
}
|
||||
api.useM2A<String> {
|
||||
<error>this</error>.length
|
||||
}
|
||||
api.useM2B<String> {
|
||||
this.length
|
||||
}
|
||||
}
|
||||
|
||||
public fun testUseAsParameter(api: javaInterface.API) {
|
||||
api.useM1A<String> {
|
||||
it.length
|
||||
}
|
||||
api.useM1B<String> {
|
||||
<error>it</error>.length
|
||||
}
|
||||
api.useM2A<String> {
|
||||
it.length
|
||||
}
|
||||
api.useM2B<String> {
|
||||
<error>it</error>.length
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user