Create from Usage: Implement "Create type alias" quickfix

#KT-12904 Fixed
This commit is contained in:
Alexey Sedunov
2016-07-20 14:34:49 +03:00
parent 17edbac72b
commit 6a2edabbd4
50 changed files with 555 additions and 101 deletions
@@ -1,5 +1,6 @@
// "Create class 'A'" "false"
// ACTION: Create interface 'A'
// ACTION: Create type alias 'A'
// ACTION: Create test
// ERROR: Unresolved reference: A
package p
@@ -1,6 +1,7 @@
// "Create annotation 'A'" "false"
// ACTION: Create class 'A'
// ACTION: Create interface 'A'
// ACTION: Create type alias 'A'
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
// ERROR: Unresolved reference: A
@@ -5,5 +5,6 @@
// ACTION: Create class 'A'
// ACTION: Create enum 'A'
// ACTION: Create interface 'A'
// ACTION: Create type alias 'A'
// ERROR: Unresolved reference: A
internal fun foo(): J.<caret>A = throw Throwable("")
@@ -3,6 +3,7 @@
// ACTION: Create class 'A'
// ACTION: Create interface 'A'
// ACTION: Create enum 'A'
// ACTION: Create type alias 'A'
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
// ERROR: Unresolved reference: A
@@ -1,6 +1,7 @@
// "Create enum 'A'" "false"
// ACTION: Create class 'A'
// ACTION: Create interface 'A'
// ACTION: Create type alias 'A'
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
// ERROR: Unresolved reference: A
@@ -1,6 +1,7 @@
// "Create annotation 'NotExistent'" "false"
// ACTION: Create class 'NotExistent'
// ACTION: Create interface 'NotExistent'
// ACTION: Create type alias 'NotExistent'
// ACTION: Create test
// ERROR: Unresolved reference: NotExistent
class TPB<X : <caret>NotExistent>
@@ -1,6 +1,7 @@
// "Create annotation 'NotExistent'" "false"
// ACTION: Create class 'NotExistent'
// ACTION: Create interface 'NotExistent'
// ACTION: Create type alias 'NotExistent'
// ACTION: Create test
// ERROR: Unresolved reference: NotExistent
class TPB<X> where X : <caret>NotExistent
@@ -1,6 +1,7 @@
// "Create enum 'NotExistent'" "false"
// ACTION: Create class 'NotExistent'
// ACTION: Create interface 'NotExistent'
// ACTION: Create type alias 'NotExistent'
// ACTION: Create test
// ERROR: Unresolved reference: NotExistent
class TPB<X : <caret>NotExistent>
@@ -1,6 +1,7 @@
// "Create enum 'NotExistent'" "false"
// ACTION: Create class 'NotExistent'
// ACTION: Create interface 'NotExistent'
// ACTION: Create type alias 'NotExistent'
// ACTION: Create test
// ERROR: Unresolved reference: NotExistent
class TPB<X> where X : <caret>NotExistent
@@ -1,6 +1,7 @@
// "Create object 'NotExistent'" "false"
// ACTION: Create class 'NotExistent'
// ACTION: Create interface 'NotExistent'
// ACTION: Create type alias 'NotExistent'
// ACTION: Create test
// ERROR: Unresolved reference: NotExistent
class TPB<X : <caret>NotExistent>
@@ -1,6 +1,7 @@
// "Create object 'NotExistent'" "false"
// ACTION: Create class 'NotExistent'
// ACTION: Create interface 'NotExistent'
// ACTION: Create type alias 'NotExistent'
// ACTION: Create test
// ERROR: Unresolved reference: NotExistent
class TPB<X> where X : <caret>NotExistent
@@ -3,6 +3,7 @@
// ACTION: Create class 'A'
// ACTION: Create interface 'A'
// ACTION: Create enum 'A'
// ACTION: Create type alias 'A'
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
// ERROR: Unresolved reference: A
@@ -1,6 +1,7 @@
// "Create object 'A'" "false"
// ACTION: Create class 'A'
// ACTION: Create interface 'A'
// ACTION: Create type alias 'A'
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
// ERROR: Unresolved reference: A
@@ -0,0 +1,5 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
fun foo(): p.<caret>A = throw Throwable("")
@@ -0,0 +1,7 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
typealias A = Dummy
fun foo(): p.A = throw Throwable("")
@@ -0,0 +1,7 @@
// "Create type alias 'A'" "false"
// ACTION: Convert to block body
// ACTION: Remove explicit type specification
// ERROR: Unresolved reference: A
package p
internal fun foo(): Int.<caret>A = throw Throwable("")
@@ -0,0 +1,6 @@
// "Create type alias 'X'" "true"
open class A<T>
class B : A<B.X>() {
typealias X = Dummy
}
@@ -0,0 +1,5 @@
// DISABLED: See KT-13596
// "Create type alias 'X'" "true"
open class A<T>
class B : A<B.<caret>X>()
@@ -0,0 +1,7 @@
// "Create type alias 'X'" "true"
open class A<T>
class B : A<B.X>() {
typealias X = Dummy
}
@@ -0,0 +1,7 @@
// DISABLED: See KT-13596
// "Create type alias 'X'" "true"
open class A<T>
class B : A<B.<caret>X>() {
}
@@ -0,0 +1,5 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
fun foo(): <caret>A = throw Throwable("")
@@ -0,0 +1,7 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
typealias A = Dummy
fun foo(): A = throw Throwable("")
@@ -0,0 +1,5 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
fun foo(): <caret>A<*, String> = throw Throwable("")
@@ -0,0 +1,7 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
typealias A<T, U> = Dummy
fun foo(): A<*, String> = throw Throwable("")
@@ -0,0 +1,5 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
fun foo(): <caret>A<Int, String> = throw Throwable("")
@@ -0,0 +1,7 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
typealias A<T, U> = Dummy
fun foo(): A<Int, String> = throw Throwable("")
@@ -0,0 +1,11 @@
// "Create type alias 'A'" "false"
// ACTION: Convert to block body
// ACTION: Create class 'A'
// ACTION: Create enum 'A'
// ACTION: Create interface 'A'
// ACTION: Create object 'A'
// ACTION: Remove explicit type specification
// ERROR: Unresolved reference: A
package p
fun foo(): <caret>A.B = throw Throwable("")
@@ -0,0 +1,11 @@
// "Create type alias 'X'" "false"
// ACTION: Create class 'X'
// ACTION: Create interface 'X'
// ERROR: Unresolved reference: X
package p
open class A<T : List<T>>
fun foo(a: A<<caret>X<Int>>) {
}
@@ -0,0 +1,11 @@
// "Create type alias 'X'" "false"
// ACTION: Create class 'X'
// ACTION: Create interface 'X'
// ERROR: Unresolved reference: X
package p
open class A<T, U : Map<T, U>>
fun foo(a: A<List<String>, <caret>X<Int>>) {
}
@@ -0,0 +1,9 @@
// "Create type alias 'X'" "true"
// ERROR: Unresolved reference: Dummy
package p
open class A<T, U : List<T>>
fun foo(a: A<List<String>, <caret>X<Int>>) {
}
@@ -0,0 +1,11 @@
// "Create type alias 'X'" "true"
// ERROR: Unresolved reference: Dummy
package p
open class A<T, U : List<T>>
typealias X<T> = Dummy
fun foo(a: A<List<String>, X<Int>>) {
}
@@ -0,0 +1,9 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
class T {
}
fun foo(): T.<caret>A = throw Throwable("")
@@ -0,0 +1,10 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
class T {
typealias A = Dummy
}
fun foo(): T.A = throw Throwable("")
@@ -0,0 +1,7 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
class T
fun foo(): T.<caret>A = throw Throwable("")
@@ -0,0 +1,9 @@
// "Create type alias 'A'" "true"
// ERROR: Unresolved reference: Dummy
package p
class T {
typealias A = Dummy
}
fun foo(): T.A = throw Throwable("")