diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt
index 199c9417920..a3401732802 100644
--- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt
+++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt
@@ -48,6 +48,7 @@ import org.jetbrains.jet.lang.resolve.calls.CallTransformer.CallForImplicitInvok
import org.jetbrains.kotlin.util.sure
import org.jetbrains.jet.lang.psi.JetCallElement
import org.jetbrains.jet.lang.psi.psiUtil.getTextWithLocation
+import org.jetbrains.jet.lang.psi.JetInstanceExpressionWithLabel
/**
* For expressions like a(), a[i], a.b.c(), +a, a + b, (a()), a(): Int, @label a()
@@ -62,7 +63,7 @@ public fun JetElement.getCall(context: BindingContext): Call? {
val parent = element.getParent()
val reference = when {
- parent is JetThisExpression -> parent : JetThisExpression
+ parent is JetInstanceExpressionWithLabel -> parent : JetInstanceExpressionWithLabel
else -> element.getCalleeExpressionIfAny()
}
if (reference != null) {
diff --git a/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.kt b/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.kt
new file mode 100644
index 00000000000..5b91e824f9d
--- /dev/null
+++ b/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.kt
@@ -0,0 +1,9 @@
+open class A {
+ open fun foo() {}
+}
+
+class B: A() {
+ override fun foo() {
+ super@B.foo()
+ }
+}
\ No newline at end of file
diff --git a/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt b/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt
new file mode 100644
index 00000000000..d094bb3e832
--- /dev/null
+++ b/compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt
@@ -0,0 +1,18 @@
+open class A {
+ open fun foo() {}
+}
+
+class B: A() {
+ override fun foo() {
+ super@B.foo()
+ }
+}
+
+
+Resolved call:
+
+Resulting descriptor: Class{B}::this
+
+Explicit receiver kind = NO_EXPLICIT_RECEIVER
+This object = NO_RECEIVER
+Receiver argument = NO_RECEIVER
\ No newline at end of file
diff --git a/compiler/testData/resolvedCalls/this/labeledThis.kt b/compiler/testData/resolvedCalls/thisOrSuper/labeledThis.kt
similarity index 100%
rename from compiler/testData/resolvedCalls/this/labeledThis.kt
rename to compiler/testData/resolvedCalls/thisOrSuper/labeledThis.kt
diff --git a/compiler/testData/resolvedCalls/this/labeledThis.txt b/compiler/testData/resolvedCalls/thisOrSuper/labeledThis.txt
similarity index 100%
rename from compiler/testData/resolvedCalls/this/labeledThis.txt
rename to compiler/testData/resolvedCalls/thisOrSuper/labeledThis.txt
diff --git a/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.kt b/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.kt
new file mode 100644
index 00000000000..8c675ea4dab
--- /dev/null
+++ b/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.kt
@@ -0,0 +1,9 @@
+open class A {
+ open fun foo() {}
+}
+
+class B: A() {
+ override fun foo() {
+ super.foo()
+ }
+}
diff --git a/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt b/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt
new file mode 100644
index 00000000000..d027fb9f00c
--- /dev/null
+++ b/compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt
@@ -0,0 +1,18 @@
+open class A {
+ open fun foo() {}
+}
+
+class B: A() {
+ override fun foo() {
+ super.foo()
+ }
+}
+
+
+Resolved call:
+
+Resulting descriptor: Class{B}::this
+
+Explicit receiver kind = NO_EXPLICIT_RECEIVER
+This object = NO_RECEIVER
+Receiver argument = NO_RECEIVER
diff --git a/compiler/testData/resolvedCalls/this/simpleThis.kt b/compiler/testData/resolvedCalls/thisOrSuper/simpleThis.kt
similarity index 100%
rename from compiler/testData/resolvedCalls/this/simpleThis.kt
rename to compiler/testData/resolvedCalls/thisOrSuper/simpleThis.kt
diff --git a/compiler/testData/resolvedCalls/this/simpleThis.txt b/compiler/testData/resolvedCalls/thisOrSuper/simpleThis.txt
similarity index 100%
rename from compiler/testData/resolvedCalls/this/simpleThis.txt
rename to compiler/testData/resolvedCalls/thisOrSuper/simpleThis.txt
diff --git a/compiler/testData/resolvedCalls/this/thisInExtensionFunction.kt b/compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.kt
similarity index 100%
rename from compiler/testData/resolvedCalls/this/thisInExtensionFunction.kt
rename to compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.kt
diff --git a/compiler/testData/resolvedCalls/this/thisInExtensionFunction.txt b/compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.txt
similarity index 100%
rename from compiler/testData/resolvedCalls/this/thisInExtensionFunction.txt
rename to compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.txt
diff --git a/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java b/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java
index 268fd50b2a9..c1821f02cb4 100644
--- a/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java
+++ b/compiler/tests/org/jetbrains/jet/resolve/calls/ResolvedCallsTestGenerated.java
@@ -31,7 +31,7 @@ import org.jetbrains.jet.resolve.calls.AbstractResolvedCallsTest;
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("compiler/testData/resolvedCalls")
-@InnerTestClasses({ResolvedCallsTestGenerated.Arguments.class, ResolvedCallsTestGenerated.FunctionTypes.class, ResolvedCallsTestGenerated.Invoke.class, ResolvedCallsTestGenerated.RealExamples.class, ResolvedCallsTestGenerated.This.class})
+@InnerTestClasses({ResolvedCallsTestGenerated.Arguments.class, ResolvedCallsTestGenerated.FunctionTypes.class, ResolvedCallsTestGenerated.Invoke.class, ResolvedCallsTestGenerated.RealExamples.class, ResolvedCallsTestGenerated.ThisOrSuper.class})
public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
public void testAllFilesPresentInResolvedCalls() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/resolvedCalls"), Pattern.compile("^(.+)\\.kt$"), true);
@@ -319,25 +319,35 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
}
- @TestMetadata("compiler/testData/resolvedCalls/this")
- public static class This extends AbstractResolvedCallsTest {
- public void testAllFilesPresentInThis() throws Exception {
- JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/resolvedCalls/this"), Pattern.compile("^(.+)\\.kt$"), true);
+ @TestMetadata("compiler/testData/resolvedCalls/thisOrSuper")
+ public static class ThisOrSuper extends AbstractResolvedCallsTest {
+ public void testAllFilesPresentInThisOrSuper() throws Exception {
+ JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/resolvedCalls/thisOrSuper"), Pattern.compile("^(.+)\\.kt$"), true);
+ }
+
+ @TestMetadata("labeledSuper.kt")
+ public void testLabeledSuper() throws Exception {
+ doTest("compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.kt");
}
@TestMetadata("labeledThis.kt")
public void testLabeledThis() throws Exception {
- doTest("compiler/testData/resolvedCalls/this/labeledThis.kt");
+ doTest("compiler/testData/resolvedCalls/thisOrSuper/labeledThis.kt");
+ }
+
+ @TestMetadata("simpleSuper.kt")
+ public void testSimpleSuper() throws Exception {
+ doTest("compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.kt");
}
@TestMetadata("simpleThis.kt")
public void testSimpleThis() throws Exception {
- doTest("compiler/testData/resolvedCalls/this/simpleThis.kt");
+ doTest("compiler/testData/resolvedCalls/thisOrSuper/simpleThis.kt");
}
@TestMetadata("thisInExtensionFunction.kt")
public void testThisInExtensionFunction() throws Exception {
- doTest("compiler/testData/resolvedCalls/this/thisInExtensionFunction.kt");
+ doTest("compiler/testData/resolvedCalls/thisOrSuper/thisInExtensionFunction.kt");
}
}
@@ -349,7 +359,7 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
suite.addTestSuite(FunctionTypes.class);
suite.addTestSuite(Invoke.class);
suite.addTestSuite(RealExamples.class);
- suite.addTestSuite(This.class);
+ suite.addTestSuite(ThisOrSuper.class);
return suite;
}
}