KT-5308 Wrong ExplicitReceiverKind when access to IntRange.EMPTY
#KT-5308 Fixed
This commit is contained in:
+5
-1
@@ -61,7 +61,11 @@ public class QualifierReceiver(
|
|||||||
fun getNestedClassesAndPackageMembersScope(): JetScope {
|
fun getNestedClassesAndPackageMembersScope(): JetScope {
|
||||||
val scopes = ArrayList<JetScope>(3)
|
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())
|
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 */
|
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
@TestMetadata("compiler/testData/resolvedCalls")
|
@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 class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
|
||||||
public void testAllFilesPresentInResolvedCalls() throws Exception {
|
public void testAllFilesPresentInResolvedCalls() throws Exception {
|
||||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/resolvedCalls"), Pattern.compile("^(.+)\\.kt$"), true);
|
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")
|
@TestMetadata("compiler/testData/resolvedCalls/realExamples")
|
||||||
public static class RealExamples extends AbstractResolvedCallsTest {
|
public static class RealExamples extends AbstractResolvedCallsTest {
|
||||||
public void testAllFilesPresentInRealExamples() throws Exception {
|
public void testAllFilesPresentInRealExamples() throws Exception {
|
||||||
@@ -427,6 +450,7 @@ public class ResolvedCallsTestGenerated extends AbstractResolvedCallsTest {
|
|||||||
suite.addTestSuite(DifferentCallElements.class);
|
suite.addTestSuite(DifferentCallElements.class);
|
||||||
suite.addTestSuite(FunctionTypes.class);
|
suite.addTestSuite(FunctionTypes.class);
|
||||||
suite.addTestSuite(Invoke.class);
|
suite.addTestSuite(Invoke.class);
|
||||||
|
suite.addTestSuite(ObjectsAndClassObjects.class);
|
||||||
suite.addTestSuite(RealExamples.class);
|
suite.addTestSuite(RealExamples.class);
|
||||||
suite.addTestSuite(Resolve.class);
|
suite.addTestSuite(Resolve.class);
|
||||||
suite.addTestSuite(ThisOrSuper.class);
|
suite.addTestSuite(ThisOrSuper.class);
|
||||||
|
|||||||
Reference in New Issue
Block a user