Write to trace in case class qualifier is a short reference to default object

This allows to fix some cases when there is a difference between explicit and short reference to default object
Fix shorten reference, optimize imports and import insert helper for default objects
ShortenReferences always transforms default object references to shorter form for now
Fix DescriptorUtils#getFqName() for default objects (affects test data mostly)
Fix DescriptorUtils#getImportableDescriptor()
This commit is contained in:
Pavel V. Talanov
2015-02-25 13:19:39 +03:00
parent 7f672f8078
commit 989f07962b
40 changed files with 278 additions and 104 deletions
@@ -7,4 +7,8 @@ import a.T
fun g(t: T): Int {
g(A)
B.f()
A
B
A.Default
B.Default
}
@@ -16,6 +16,10 @@ class B {
<selection>fun g(t: T): Int {
g(A)
B.f()
A
B
A.Default
B.Default
}</selection>
@@ -2,5 +2,5 @@ package to
import a.Outer
fun f(i: Outer.Inner, n: Outer.Nested, e: Outer.NestedEnum, o: Outer.NestedObj, t: Outer.NestedTrait, a: Outer.NestedAnnotation) {
fun f(n: Outer.Default.Nested, e: Outer.Default.NestedEnum, o: Outer.Default.NestedObj, t: Outer.Default.NestedTrait, a: Outer.Default.NestedAnnotation) {
}
@@ -1,11 +1,13 @@
package a
import a.Outer.*
import a.Outer.Default.Nested
import a.Outer.Default.NestedEnum
import a.Outer.Default.NestedObj
import a.Outer.Default.NestedTrait
import a.Outer.Default.NestedAnnotation
class Outer {
class object {
inner class Inner {
}
class Nested {
}
enum class NestedEnum {
@@ -18,5 +20,5 @@ class Outer {
}
}
<selection>fun f(i: Inner, n: Nested, e: NestedEnum, o: NestedObj, t: NestedTrait, a: NestedAnnotation) {
<selection>fun f(n: Nested, e: NestedEnum, o: NestedObj, t: NestedTrait, a: NestedAnnotation) {
}</selection>
@@ -1,2 +1,2 @@
<!-- nestedClassShouldBeQualified3 -->
Nested class 'Nested' should be qualified as 'C.D.Nested'
Nested class 'Nested' should be qualified as 'C.Default.D.Nested'
@@ -1,2 +1,2 @@
<!-- nestedClassShouldBeQualified4 -->
Nested class 'Nested' should be qualified as 'C.D::Nested'
Nested class 'Nested' should be qualified as 'C.Default.D::Nested'
@@ -1,2 +1,2 @@
<!-- nestedClassShouldBeQualified5 -->
Nested class object of 'F' should be qualified as 'E.F'
Nested class object of 'F' should be qualified as 'E.F.Default'
@@ -0,0 +1,13 @@
package d
class A {
class object E {
val c: Int
}
}
class B {
class object F {
val c: Int
}
}
@@ -0,0 +1,11 @@
package p
import d.A
import d.A.E
import d.B.F
import d.B
fun main(args: Array<String>) {
F.c
A.c
}
@@ -0,0 +1,9 @@
package p
import d.A
import d.B.F
fun main(args: Array<String>) {
F.c
A.c
}
@@ -1 +1 @@
Property A.t will become invisible after extraction
Property A.Default.t will become invisible after extraction
@@ -3,5 +3,7 @@ package source
import library.*
class Bar {
class object {
val c : Int
}
}
@@ -3,6 +3,7 @@ package target
import library.JavaClass
import library.KtClass
import library.KtObject
import source.Bar
class Foo {
val jv1 = JavaClass.foo()
@@ -13,4 +14,11 @@ class Foo {
val kt2 = KtObject.foo()
val kt3 = KtClass.Inner.foo()
val kt4 = KtObject.Inner.foo()
val kt5 = KtClass.foo()
val kt6 = KtClass
val kt7 = KtClass
val kt8 = Bar
val kt9 = Bar
val kt10 = Bar.c
}
@@ -11,8 +11,17 @@ class <caret>Foo {
val kt2 = KtObject.foo()
val kt3 = KtClass.Inner.foo()
val kt4 = KtObject.Inner.foo()
val kt5 = KtClass.Default.foo()
val kt6 = KtClass.Default
val kt7 = KtClass
val kt8 = Bar
val kt9 = Bar.Default
val kt10 = Bar.Default.c
}
class Bar {
class object {
val c : Int
}
}
+20 -2
View File
@@ -1,16 +1,34 @@
package p.q
<selection>fun foo(): Int {
<selection>fun foo(myC: p.q.MyClass, def: p.q.MyClass.Default, nes: p.q.MyClass.Default.Nested) {
p.q.MyClass.Default.foo()
p.q.MyClass.Default.coProp
p.q.MyClass.Default
p.q.MyClass
p.q.MyClass.coProp
p.q.MyClass.foo()
return p.q.MyClass.coProp + 10
p.q.MyClass.bar(p.q.MyClass.Default)
p.q.MyClass.bar(p.q.MyClass)
p.q.MyClass.Default.Nested.Default
p.q.MyClass.Default.Nested.Default.c
MyClass.Default
}</selection>
class MyClass {
class object {
val coProp = 1
class Nested {
class object {
val c: Int = 1
}
}
fun foo() {
}
fun bar(p: MyClass.Default) {
}
}
}
+20 -2
View File
@@ -1,16 +1,34 @@
package p.q
fun foo(): Int {
fun foo(myC: MyClass, def: MyClass.Default, nes: MyClass.Default.Nested) {
MyClass.foo()
return MyClass.coProp + 10
MyClass.coProp
MyClass
MyClass
MyClass.coProp
MyClass.foo()
MyClass.bar(MyClass)
MyClass.bar(MyClass)
MyClass.Default.Nested
MyClass.Default.Nested.c
MyClass
}
class MyClass {
class object {
val coProp = 1
class Nested {
class object {
val c: Int = 1
}
}
fun foo() {
}
fun bar(p: MyClass.Default) {
}
}
}