Improve inference on generics for callable references

#KT-10711 Fixed
 #KT-12802 Fixed
 #KT-12964 Fixed
 #KT-15439 Fixed

Analyze callable references in `dependent` mode, then complete them with
respect to expected types
This commit is contained in:
Mikhail Zarechenskiy
2017-01-17 02:30:16 +03:00
parent 07bb7ef4d3
commit 2cac6a9e7d
50 changed files with 938 additions and 22 deletions
@@ -0,0 +1,8 @@
@kotlin.Metadata
public final class GenericCallableReferenceArgumentsKt {
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
private final static method check(p0: java.lang.Object, p1: java.lang.Object, p2: kotlin.jvm.functions.Function1, p3: java.lang.String, p4: java.lang.String): void
private final static method check(p0: kotlin.jvm.functions.Function1, p1: kotlin.jvm.functions.Function1, p2: java.lang.String, p3: java.lang.String): void
public final static method foo(p0: java.lang.Object): java.lang.Object
public final static method fooReturnInt(p0: java.lang.Object): int
}
@@ -0,0 +1,22 @@
@kotlin.Metadata
public final class GenericCallableReferencesWithNullableTypesKt {
private final static method bar(p0: java.lang.Object, p1: java.lang.Object, p2: kotlin.jvm.functions.Function1, p3: java.lang.String, p4: java.lang.String): Pair
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
public final static method foo(p0: java.lang.Object): java.lang.Object
}
@kotlin.Metadata
public final class Pair {
private final field a: java.lang.Object
private final field b: java.lang.Object
public method <init>(p0: java.lang.Object, p1: java.lang.Object): void
public final method component1(): java.lang.Object
public final method component2(): java.lang.Object
public synthetic static method copy$default(p0: Pair, p1: java.lang.Object, p2: java.lang.Object, p3: int, p4: java.lang.Object): Pair
public final @org.jetbrains.annotations.NotNull method copy(p0: java.lang.Object, p1: java.lang.Object): Pair
public method equals(p0: java.lang.Object): boolean
public final method getA(): java.lang.Object
public final method getB(): java.lang.Object
public method hashCode(): int
public method toString(): java.lang.String
}
@@ -0,0 +1,8 @@
@kotlin.Metadata
public final class GenericCallableReferencesWithOverloadKt {
private final static method bar(p0: kotlin.jvm.functions.Function1, p1: java.lang.String): java.lang.Object
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
public final static method foo(@org.jetbrains.annotations.Nullable p0: java.lang.Integer): void
public final static method foo(@org.jetbrains.annotations.Nullable p0: java.lang.String): void
public final static method foo(p0: boolean): void
}
@@ -0,0 +1,11 @@
@kotlin.Metadata
public final class GenericWithDependentTypeKt {
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
}
@kotlin.Metadata
public final class Wrapper {
private final field value: java.lang.Object
public method <init>(p0: java.lang.Object): void
public final method getValue(): java.lang.Object
}
@@ -0,0 +1,7 @@
@kotlin.Metadata
public final class SpecialCallsKt {
public final static method bar(p0: java.lang.Object): java.lang.Object
public final static method baz(p0: int): int
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
public final static @org.jetbrains.annotations.Nullable method nullableFun(): kotlin.jvm.functions.Function1
}