Create From Usage: Create class by reference expression

This commit is contained in:
Alexey Sedunov
2014-11-06 21:19:33 +03:00
parent 1f14d93412
commit b8f68acdbb
76 changed files with 1072 additions and 36 deletions
@@ -0,0 +1,13 @@
// "Create class 'B'" "true"
// ERROR: Unresolved reference: C
package p
fun foo() = A.B.C
class A {
class B {
}
}
@@ -0,0 +1,9 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = A.B
class A {
}
@@ -0,0 +1,9 @@
// "Create enum 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = A.B
enum class A {
}
@@ -0,0 +1,10 @@
// "Create enum constant 'A'" "true"
package p
fun foo() = X.A
enum class X {
A
}
@@ -0,0 +1,11 @@
// "Create enum constant 'A'" "true"
// ERROR: No value passed for parameter n
package p
fun foo() = X.A
enum class X(n: Int) {
A : X()
}
@@ -0,0 +1,10 @@
// "Create enum constant 'A'" "true"
package p
fun foo(): E = E.A
enum class E {
A
}
@@ -0,0 +1,9 @@
// "Create object 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = A.B
object A {
}
@@ -0,0 +1,8 @@
// "Create object 'A'" "true"
package p
fun foo() = p.A
object A {
}
@@ -0,0 +1,8 @@
// "Create object 'A'" "true"
package p
fun foo() = A
object A {
}
@@ -0,0 +1,12 @@
// "Create object 'A'" "true"
package p
fun foo() = X.A
class X {
object A {
}
}
@@ -0,0 +1,12 @@
// "Create object 'A'" "true"
package p
fun foo(): X = A
open class X {
}
object A : X() {
}
@@ -0,0 +1,12 @@
// "Create object 'A'" "true"
package p
fun foo(): X = A
trait X {
}
object A : X {
}
@@ -0,0 +1,9 @@
// "Create trait 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = A.B
trait A {
}
@@ -0,0 +1,9 @@
// "Create object 'Foo'" "true"
fun test() {
Foo
}
object Foo {
}
@@ -0,0 +1,14 @@
// "Create object 'Foo'" "true"
// DISABLE-ERRORS
import kotlin.properties.ReadOnlyProperty
open class B
class A {
val x: B by Foo
}
object Foo : ReadOnlyProperty<A, B> {
}
@@ -0,0 +1,14 @@
// "Create object 'Foo'" "true"
// DISABLE-ERRORS
import kotlin.properties.ReadWriteProperty
open class B
class A {
var x: B by Foo
}
object Foo : ReadWriteProperty<A, B> {
}
@@ -0,0 +1,9 @@
// "Create annotation 'A'" "false"
// ACTION: Create object 'A'
// ACTION: Create local variable 'A'
// ACTION: Create parameter 'A'
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = <caret>A
@@ -0,0 +1,9 @@
// "Create class 'B'" "true"
// ERROR: Unresolved reference: C
package p
fun foo() = A.<caret>B.C
class A {
}
@@ -0,0 +1,5 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = <caret>A.B
@@ -0,0 +1,6 @@
// "Create class 'A'" "false"
// ACTION: Create object 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = p.<caret>A
@@ -0,0 +1,9 @@
// "Create class 'A'" "false"
// ACTION: Create object 'A'
// ACTION: Create local variable 'A'
// ACTION: Create parameter 'A'
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = <caret>A
@@ -0,0 +1,10 @@
// "Create class 'A'" "false"
// ACTION: Create object 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = X.<caret>A
class X {
}
@@ -0,0 +1,10 @@
// "Create class 'A'" "false"
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = X().<caret>A
class X {
}
@@ -0,0 +1,5 @@
// "Create enum 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = <caret>A.B
@@ -0,0 +1,9 @@
// "Create enum constant 'A'" "false"
// ACTION: Create object 'A'
// ACTION: Create local variable 'A'
// ACTION: Create parameter 'A'
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = <caret>A
@@ -0,0 +1,8 @@
// "Create enum constant 'A'" "true"
package p
fun foo() = X.<caret>A
enum class X {
}
@@ -0,0 +1,9 @@
// "Create enum constant 'A'" "true"
// ERROR: No value passed for parameter n
package p
fun foo() = X.<caret>A
enum class X(n: Int) {
}
@@ -0,0 +1,8 @@
// "Create enum constant 'A'" "true"
package p
fun foo(): E = E.<caret>A
enum class E {
}
@@ -0,0 +1,10 @@
// "Create enum constant 'A'" "false"
// ACTION: Create object 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = X.<caret>A
class X {
}
@@ -0,0 +1,10 @@
// "Create enum constant 'A'" "false"
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = X().<caret>A
class X {
}
@@ -0,0 +1,15 @@
// "Create enum constant 'A'" "false"
// ACTION: Convert to block body
// ACTION: Create object 'A'
// ERROR: Unresolved reference: A
package p
fun foo(): X = E.<caret>A
enum class E {
}
open class X {
}
@@ -0,0 +1,9 @@
// "Create enum 'A'" "false"
// ACTION: Create object 'A'
// ACTION: Create local variable 'A'
// ACTION: Create parameter 'A'
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = <caret>A
@@ -0,0 +1,5 @@
// "Create object 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = <caret>A.B
@@ -0,0 +1,4 @@
// "Create object 'A'" "true"
package p
fun foo() = p.<caret>A
@@ -0,0 +1,4 @@
// "Create object 'A'" "true"
package p
fun foo() = <caret>A
@@ -0,0 +1,8 @@
// "Create object 'A'" "true"
package p
fun foo() = X.<caret>A
class X {
}
@@ -0,0 +1,10 @@
// "Create object 'A'" "false"
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = X().<caret>A
class X {
}
@@ -0,0 +1,8 @@
// "Create object 'A'" "true"
package p
fun foo(): X = <caret>A
open class X {
}
@@ -0,0 +1,8 @@
// "Create object 'A'" "true"
package p
fun foo(): X = <caret>A
trait X {
}
@@ -0,0 +1,5 @@
// "Create trait 'A'" "true"
// ERROR: Unresolved reference: B
package p
fun foo() = <caret>A.B
@@ -0,0 +1,9 @@
// "Create trait 'A'" "false"
// ACTION: Create object 'A'
// ACTION: Create local variable 'A'
// ACTION: Create parameter 'A'
// ACTION: Create property 'A'
// ERROR: Unresolved reference: A
package p
fun foo() = <caret>A
@@ -0,0 +1,5 @@
// "Create object 'Foo'" "true"
fun test() {
<caret>Foo
}
@@ -0,0 +1,8 @@
// "Create object 'Foo'" "true"
// DISABLE-ERRORS
open class B
class A {
val x: B by <caret>Foo
}
@@ -0,0 +1,8 @@
// "Create object 'Foo'" "true"
// DISABLE-ERRORS
open class B
class A {
var x: B by <caret>Foo
}