Try to resolve expression as class object if resolution found an inappropriate result

This commit is contained in:
Alexander Udalov
2013-12-03 17:33:35 +04:00
parent b8a97bf192
commit dfd660a8e3
3 changed files with 16 additions and 3 deletions
@@ -246,7 +246,7 @@ public class CallExpressionResolver {
context.replaceTraceAndCache(temporaryForVariable),
call, CheckValueArgumentsMode.ENABLED);
OverloadResolutionResults<VariableDescriptor> resolutionResult = callResolver.resolveSimpleProperty(contextForVariable);
if (!resolutionResult.isNothing()) {
if (resolutionResult.isSuccess()) {
temporaryForVariable.commit();
checkSuper(receiver, resolutionResult, context.trace, nameExpression);
result[0] = true;
@@ -271,8 +271,8 @@ public class CallExpressionResolver {
return jetType;
}
temporaryForVariable.commit();
result[0] = false;
return null;
result[0] = !resolutionResult.isNothing();
return resolutionResult.isSingleResult() ? resolutionResult.getResultingDescriptor().getReturnType() : null;
}
@NotNull
@@ -0,0 +1,8 @@
enum class E {
entry
}
val Int.entry = 42
val Long.entry = 239
val e = E.entry
@@ -2572,6 +2572,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
doTest("compiler/testData/diagnostics/tests/enum/enumWithEmptyName.kt");
}
@TestMetadata("extensionNamedAsEnumEntry.kt")
public void testExtensionNamedAsEnumEntry() throws Exception {
doTest("compiler/testData/diagnostics/tests/enum/extensionNamedAsEnumEntry.kt");
}
@TestMetadata("importEnumFromJava.kt")
public void testImportEnumFromJava() throws Exception {
doTest("compiler/testData/diagnostics/tests/enum/importEnumFromJava.kt");