From 22624186f6cd066eda306b0624bc1e215cd71b87 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Thu, 10 Jul 2014 17:17:13 +0400 Subject: [PATCH] Added tests for 'super' resolved calls --- .../jet/lang/resolve/BindingContextUtils.kt | 3 +- .../resolvedCalls/thisOrSuper/labeledSuper.kt | 9 ++++++ .../thisOrSuper/labeledSuper.txt | 18 ++++++++++++ .../{this => thisOrSuper}/labeledThis.kt | 0 .../{this => thisOrSuper}/labeledThis.txt | 0 .../resolvedCalls/thisOrSuper/simpleSuper.kt | 9 ++++++ .../resolvedCalls/thisOrSuper/simpleSuper.txt | 18 ++++++++++++ .../{this => thisOrSuper}/simpleThis.kt | 0 .../{this => thisOrSuper}/simpleThis.txt | 0 .../thisInExtensionFunction.kt | 0 .../thisInExtensionFunction.txt | 0 .../calls/ResolvedCallsTestGenerated.java | 28 +++++++++++++------ 12 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.kt create mode 100644 compiler/testData/resolvedCalls/thisOrSuper/labeledSuper.txt rename compiler/testData/resolvedCalls/{this => thisOrSuper}/labeledThis.kt (100%) rename compiler/testData/resolvedCalls/{this => thisOrSuper}/labeledThis.txt (100%) create mode 100644 compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.kt create mode 100644 compiler/testData/resolvedCalls/thisOrSuper/simpleSuper.txt rename compiler/testData/resolvedCalls/{this => thisOrSuper}/simpleThis.kt (100%) rename compiler/testData/resolvedCalls/{this => thisOrSuper}/simpleThis.txt (100%) rename compiler/testData/resolvedCalls/{this => thisOrSuper}/thisInExtensionFunction.kt (100%) rename compiler/testData/resolvedCalls/{this => thisOrSuper}/thisInExtensionFunction.txt (100%) 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; } }