Create from usage: Support generation of nested Java classes from usages in Kotlin code

This commit is contained in:
Alexey Sedunov
2015-02-19 13:59:14 +03:00
parent 5cd477279b
commit 60d02dab0f
169 changed files with 1452 additions and 40 deletions
@@ -0,0 +1,6 @@
// "Create annotation 'foo'" "false"
// ERROR: Unresolved reference: foo
J.<caret>foo(1, "2") fun test() {
}
@@ -0,0 +1,8 @@
class J {
public static @interface foo {
int i();
String s();
}
}
@@ -0,0 +1,7 @@
// "Create annotation 'foo'" "true"
// ERROR: Unresolved reference: foo
J.foo(1, "2") fun test() {
}
@@ -0,0 +1,6 @@
// "Create annotation 'foo'" "true"
// ERROR: Unresolved reference: foo
J.<caret>foo(1, "2") fun test() {
}
@@ -0,0 +1,8 @@
class J {
public static @interface foo {
int count();
String name();
}
}
@@ -0,0 +1,7 @@
// "Create annotation 'foo'" "true"
// ERROR: Unresolved reference: foo
J.foo(count = 1, name = "2") fun test() {
}
@@ -0,0 +1,6 @@
// "Create annotation 'foo'" "true"
// ERROR: Unresolved reference: foo
J.<caret>foo(count = 1, name = "2") fun test() {
}
@@ -0,0 +1,8 @@
class J {
public static @interface bar {
String s();
int i();
}
}
@@ -0,0 +1,8 @@
// "Create annotation 'bar'" "true"
// ERROR: Unresolved reference: foo
// ERROR: Unresolved reference: bar
[foo(1, "2", J.bar("3", 4))] fun test() {
}
@@ -0,0 +1,7 @@
// "Create annotation 'bar'" "true"
// ERROR: Unresolved reference: foo
// ERROR: Unresolved reference: bar
[foo(1, "2", J.<caret>bar("3", 4))] fun test() {
}
@@ -0,0 +1,9 @@
import org.jetbrains.annotations.NotNull;
class J {
public static class Foo {
public Foo(int abc, @NotNull A ghi, @NotNull String def) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A(val n: Int)
fun test() = J.Foo(abc = 1, ghi = A(2), def = "s")
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A(val n: Int)
fun test() = J.<caret>Foo(abc = 1, ghi = A(2), def = "s")
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "false"
// ACTION: Create function 'Foo'
// ACTION: Convert to block body
// ERROR: Unresolved reference: Foo
fun test(): A = <caret>Foo(2, "2")
@@ -0,0 +1,10 @@
class J<T> {
public J(T n) {
}
public class Foo<U> {
public Foo(U u) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
fun test<U>(u: U) {
val a = J(u).Foo(u)
}
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
fun test<U>(u: U) {
val a = J(u).<caret>Foo(u)
}
@@ -0,0 +1,4 @@
// "Create class 'Foo'" "false"
// ERROR: Unresolved reference: Foo
fun test() = J.<caret>Foo(2, "2")
@@ -0,0 +1,7 @@
class J {
public static class Foo {
public Foo(int i) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
fun test() {
val a = J.Foo(2)
}
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
fun test() {
val a = J.<caret>Foo(2)
}
@@ -0,0 +1,7 @@
class J {
public class Foo {
public Foo(int i) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
fun test() {
val a = J().Foo(2)
}
@@ -1,9 +1,6 @@
// "Create class 'Foo'" "false"
// ACTION: Create extension function 'Foo'
// ACTION: Create function 'Foo'
// ACTION: Convert to expression body
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
fun test(): Int {
return A().<caret>Foo(1, "2")
fun test() {
val a = J().<caret>Foo(2)
}
@@ -0,0 +1,10 @@
import kotlin.properties.ReadOnlyProperty;
import org.jetbrains.annotations.NotNull;
class J {
public static class Foo<T> implements ReadOnlyProperty<A<T>, B> {
public Foo(T t, @NotNull String s) {
}
}
}
@@ -0,0 +1,10 @@
// "Create class 'Foo'" "true"
// WITH_RUNTIME
// ERROR: Unresolved reference: Foo
open class B
class A<T>(val t: T) {
val x: B by J.Foo(t, "")
}
@@ -0,0 +1,9 @@
// "Create class 'Foo'" "true"
// WITH_RUNTIME
// ERROR: Unresolved reference: Foo
open class B
class A<T>(val t: T) {
val x: B by J.<caret>Foo(t, "")
}
@@ -0,0 +1,9 @@
import org.jetbrains.annotations.NotNull;
class J {
public static class Foo extends A {
public Foo(int i, @NotNull String s) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
open class A
fun test(): A = J.Foo(2, "2")
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
open class A
fun test(): A = J.<caret>Foo(2, "2")
@@ -0,0 +1,10 @@
import org.jetbrains.annotations.NotNull;
class J {
public static class Foo extends A {
public Foo(int i, @NotNull String s) {
super();
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
open class A(val n: Int)
fun test(): A = J.Foo(2, "2")
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
open class A(val n: Int)
fun test(): A = J.<caret>Foo(2, "2")
@@ -0,0 +1,9 @@
import org.jetbrains.annotations.NotNull;
class J {
public static class Foo implements T {
public Foo(int i, @NotNull String s) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
trait T
fun test(): T = J.Foo(2, "2")
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
trait T
fun test(): T = J.<caret>Foo(2, "2")
@@ -0,0 +1,8 @@
class B<T> {
final T t = null;
public static class Foo<U, V> {
public Foo(U u, V v) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = B.Foo<Int, String>(2, "2")
}
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = B.<caret>Foo<Int, String>(2, "2")
}
@@ -0,0 +1,8 @@
class B<T> {
final T t = null;
public class Foo<U, V> {
public Foo(U u, V v) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = b.Foo<Int, String>(2, "2")
}
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = b.<caret>Foo<Int, String>(2, "2")
}
@@ -0,0 +1,8 @@
class B<T> {
final T t = null;
public class Foo<U> {
public Foo(int i, U u) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = b.Foo<String>(2, "2")
}
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = b.<caret>Foo<String>(2, "2")
}
@@ -0,0 +1,8 @@
class B<T> {
final T t = null;
public class Foo<U, V, W> {
public Foo(V v, W w) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = b.Foo<T, Int, String>(2, "2")
}
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = b.<caret>Foo<T, Int, String>(2, "2")
}
@@ -0,0 +1,8 @@
class B<T> {
final T t = null;
public static class Foo<U> {
public Foo(int i, U u) {
}
}
}
@@ -0,0 +1,7 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = B.Foo<String>(2, "2")
}
@@ -0,0 +1,6 @@
// "Create class 'Foo'" "true"
// ERROR: Unresolved reference: Foo
class A<T>(val b: B<T>) {
fun test() = B.<caret>Foo<String>(2, "2")
}
@@ -0,0 +1,9 @@
import org.jetbrains.annotations.NotNull;
class J {
public static class A {
public A(int i, @NotNull String s, @NotNull B B) {
}
}
}
@@ -0,0 +1,10 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: A
class B {
}
class Foo: J.A(1, "2", B()) {
}
@@ -0,0 +1,9 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: A
class B {
}
class Foo: J.<caret>A(1, "2", B()) {
}
@@ -0,0 +1,9 @@
import org.jetbrains.annotations.NotNull;
class J {
public static class A {
public A(int abc, @NotNull String ghi, @NotNull B def) {
}
}
}
@@ -0,0 +1,10 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: A
class B {
}
class Foo: J.A(abc = 1, ghi = "2", def = B()) {
}
@@ -0,0 +1,9 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: A
class B {
}
class Foo: J.<caret>A(abc = 1, ghi = "2", def = B()) {
}
@@ -0,0 +1,5 @@
// "Create trait 'A'" "false"
// ERROR: Unresolved reference: A
class Foo: J.<caret>A {
}
@@ -0,0 +1,6 @@
// "Create trait 'A'" "true"
// ERROR: Unresolved reference: A
class Foo: J.A {
}
@@ -0,0 +1,5 @@
// "Create trait 'A'" "true"
// ERROR: Unresolved reference: A
class Foo: J.<caret>A {
}
@@ -0,0 +1,5 @@
public class J {
public static @interface A {
}
}
@@ -0,0 +1,8 @@
// "Create annotation 'A'" "true"
// ERROR: Unresolved reference: A
import J.A
class X {
}
@@ -0,0 +1,7 @@
// "Create annotation 'A'" "true"
// ERROR: Unresolved reference: A
import J.<caret>A
class X {
}
@@ -0,0 +1,8 @@
// "Create class 'A'" "false"
// ERROR: Unresolved reference: A
// ACTION: Create property 'A'
import J.<caret>A
class X {
}
@@ -0,0 +1,5 @@
public class J {
public static class A {
}
}
@@ -0,0 +1,8 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: A
import J.A
class X {
}
@@ -0,0 +1,7 @@
// "Create class 'A'" "true"
// ERROR: Unresolved reference: A
import J.<caret>A
class X {
}
@@ -0,0 +1,12 @@
// "Create enum constant 'A'" "false"
// ACTION: Create annotation 'A'
// ACTION: Create class 'A'
// ACTION: Create enum 'A'
// ACTION: Create property 'A'
// ACTION: Create trait 'A'
// ERROR: Unresolved reference: A
import E.<caret>A
class X {
}
@@ -0,0 +1,4 @@
public class J {
public enum A {}
}
@@ -0,0 +1,8 @@
// "Create enum 'A'" "true"
// ERROR: Unresolved reference: A
import J.A
class X {
}
@@ -0,0 +1,7 @@
// "Create enum 'A'" "true"
// ERROR: Unresolved reference: A
import J.<caret>A
class X {
}

Some files were not shown because too many files have changed in this diff Show More