KT-5308 Wrong ExplicitReceiverKind when access to IntRange.EMPTY

#KT-5308 Fixed
This commit is contained in:
Svetlana Isakova
2014-07-18 23:14:33 +04:00
parent 8289f13016
commit 6c63492355
8 changed files with 101 additions and 2 deletions
@@ -61,7 +61,11 @@ public class QualifierReceiver(
fun getNestedClassesAndPackageMembersScope(): JetScope {
val scopes = ArrayList<JetScope>(3)
scopes.addIfNotNull(classifier?.getClassObjectType()?.getMemberScope())
val classObjectDescriptor = (classifier as? ClassDescriptor)?.getClassObjectDescriptor()
if (classObjectDescriptor != null) {
// non-static members are resolved through class object receiver
scopes.add(DescriptorUtils.getStaticNestedClassesScope(classObjectDescriptor))
}
scopes.addIfNotNull(packageView?.getMemberScope())
@@ -0,0 +1,11 @@
class Foo {
class object {
val baz = Foo()
}
}
fun test() {
Foo.<caret>baz
}
@@ -0,0 +1,18 @@
class Foo {
class object {
val baz = Foo()
}
}
fun test() {
Foo.<caret>baz
}
Resolved call:
Resulting descriptor: val baz: Foo
Explicit receiver kind = THIS_OBJECT
This object = Foo {<class-object-for-Foo>}
Receiver argument = NO_RECEIVER
@@ -0,0 +1,4 @@
//KT-5308 Wrong ExplicitReceiverKind when access to IntRange.EMPTY
fun test() {
IntRange.<caret>EMPTY
}
@@ -0,0 +1,13 @@
//KT-5308 Wrong ExplicitReceiverKind when access to IntRange.EMPTY
fun test() {
IntRange.<caret>EMPTY
}
Resolved call:
Resulting descriptor: val EMPTY: IntRange
Explicit receiver kind = THIS_OBJECT
This object = IntRange {<class-object-for-IntRange>}
Receiver argument = NO_RECEIVER
@@ -0,0 +1,9 @@
object Foo {
val baz = 42
}
fun test() {
Foo.<caret>baz
}
@@ -0,0 +1,16 @@
object Foo {
val baz = 42
}
fun test() {
Foo.<caret>baz
}
Resolved call:
Resulting descriptor: val baz: Int
Explicit receiver kind = THIS_OBJECT
This object = Foo {Foo}
Receiver argument = NO_RECEIVER
@@ -28,7 +28,7 @@ import java.util.regex.Pattern;
/** 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.DifferentCallElements.class, ResolvedCallsTestGenerated.FunctionTypes.class, ResolvedCallsTestGenerated.Invoke.class, ResolvedCallsTestGenerated.RealExamples.class, ResolvedCallsTestGenerated.Resolve.class, ResolvedCallsTestGenerated.ThisOrSuper.class})
@InnerTestClasses({ResolvedCallsTestGenerated.Arguments.class, ResolvedCallsTestGenerated.DifferentCallElements.class, ResolvedCallsTestGenerated.FunctionTypes.class, ResolvedCallsTestGenerated.Invoke.class, ResolvedCallsTestGenerated.ObjectsAndClassObjects.class, ResolvedCallsTestGenerated.RealExamples.class, ResolvedCallsTestGenerated.Resolve.class, ResolvedCallsTestGenerated.ThisOrSuper.class})
public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
public void testAllFilesPresentInResolvedCalls() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/resolvedCalls"), Pattern.compile("^(.+)\\.kt$"), true);
@@ -356,6 +356,29 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
}
@TestMetadata("compiler/testData/resolvedCalls/objectsAndClassObjects")
public static class ObjectsAndClassObjects extends AbstractResolvedCallsTest {
public void testAllFilesPresentInObjectsAndClassObjects() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/resolvedCalls/objectsAndClassObjects"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("classObject.kt")
public void testClassObject() throws Exception {
doTest("compiler/testData/resolvedCalls/objectsAndClassObjects/classObject.kt");
}
@TestMetadata("kt5308IntRangeConstant.kt")
public void testKt5308IntRangeConstant() throws Exception {
doTest("compiler/testData/resolvedCalls/objectsAndClassObjects/kt5308IntRangeConstant.kt");
}
@TestMetadata("object.kt")
public void testObject() throws Exception {
doTest("compiler/testData/resolvedCalls/objectsAndClassObjects/object.kt");
}
}
@TestMetadata("compiler/testData/resolvedCalls/realExamples")
public static class RealExamples extends AbstractResolvedCallsTest {
public void testAllFilesPresentInRealExamples() throws Exception {
@@ -427,6 +450,7 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
suite.addTestSuite(DifferentCallElements.class);
suite.addTestSuite(FunctionTypes.class);
suite.addTestSuite(Invoke.class);
suite.addTestSuite(ObjectsAndClassObjects.class);
suite.addTestSuite(RealExamples.class);
suite.addTestSuite(Resolve.class);
suite.addTestSuite(ThisOrSuper.class);