Resolve function references independently of target type

KT-7564 AbstractDiagnosticsTest.checkAllResolvedCallsAreCompleted() fails on tests with function references
 #KT-7564 Fixed
This commit is contained in:
Svetlana Isakova
2015-04-27 13:20:29 +03:00
parent 5ee17c0c26
commit 4f0d541493
4 changed files with 33 additions and 1 deletions
@@ -619,7 +619,8 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
JetSimpleNameExpression reference = expression.getCallableReference();
boolean[] result = new boolean[1];
CallableDescriptor descriptor = resolveCallableReferenceTarget(lhsType, context, expression, result);
CallableDescriptor descriptor = resolveCallableReferenceTarget(
lhsType, context.replaceContextDependency(INDEPENDENT), expression, result);
if (!result[0]) {
context.trace.report(UNRESOLVED_REFERENCE.on(reference, reference));
@@ -0,0 +1,12 @@
import kotlin.reflect.*
fun <T> checkSubtype(t: T) = t
class A(var g: A) {
val f: Int = 0
fun test() {
checkSubtype<KMemberProperty<A, Int>>(::f)
checkSubtype<KMutableMemberProperty<A, A>>(::g)
}
}
@@ -0,0 +1,13 @@
package
internal fun </*0*/ T> checkSubtype(/*0*/ t: T): T
internal final class A {
public constructor A(/*0*/ g: A)
internal final val f: kotlin.Int = 0
internal final var g: A
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun test(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -909,6 +909,12 @@ public class JetDiagnosticsTestWithStdLibGenerated extends AbstractJetDiagnostic
doTest(fileName);
}
@TestMetadata("kt7564.kt")
public void testKt7564() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/callableReference/property/kt7564.kt");
doTest(fileName);
}
@TestMetadata("localVariable.kt")
public void testLocalVariable() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/callableReference/property/localVariable.kt");