Report error on non-top-level type aliases (unsupported in 1.1).
Get rid of nested type aliases in project.
This commit is contained in:
@@ -12,11 +12,6 @@ import java.lang.Class
|
||||
@Retention(RUNTIME)
|
||||
annotation class Ann(val x: Int)
|
||||
|
||||
class C {
|
||||
@Ann(1)
|
||||
typealias TA = Any
|
||||
}
|
||||
|
||||
@Ann(2)
|
||||
typealias TA = Any
|
||||
|
||||
@@ -28,7 +23,6 @@ fun Class<*>.assertHasDeclaredMethodWithAnn() {
|
||||
|
||||
fun box(): String {
|
||||
Class.forName("AnnotationsOnTypeAliasesKt").assertHasDeclaredMethodWithAnn()
|
||||
Class.forName("C").assertHasDeclaredMethodWithAnn()
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
class Cell<TC>(val x: TC)
|
||||
|
||||
object OkHost {
|
||||
val value = "OK"
|
||||
}
|
||||
|
||||
fun <T> id(x: T): T {
|
||||
typealias C = Cell<T>
|
||||
val c: C = C(x)
|
||||
return c.x
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
typealias OK = OkHost
|
||||
return id(OK.value)
|
||||
}
|
||||
+1
@@ -4,6 +4,7 @@ typealias Str = String
|
||||
typealias L<T> = List<T>
|
||||
|
||||
class Klass {
|
||||
@Suppress("TOPLEVEL_TYPEALIASES_ONLY")
|
||||
typealias Nested = Z
|
||||
|
||||
class Z
|
||||
|
||||
@@ -9,11 +9,6 @@ import java.lang.Class
|
||||
@Retention(RUNTIME)
|
||||
annotation class Ann(val x: Int)
|
||||
|
||||
class C {
|
||||
@Ann(1)
|
||||
typealias TA = Any
|
||||
}
|
||||
|
||||
@Ann(2)
|
||||
typealias TA = Any
|
||||
|
||||
@@ -28,7 +23,6 @@ fun Class<*>.assertHasDeclaredMethodWithAnn() {
|
||||
|
||||
fun box(): String {
|
||||
Class.forName("a.AKt").assertHasDeclaredMethodWithAnn()
|
||||
Class.forName("a.C").assertHasDeclaredMethodWithAnn()
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -1,14 +1,15 @@
|
||||
// FILE: A.kt
|
||||
class Foo<out T>(val t: T) {
|
||||
typealias Bar = (T) -> String
|
||||
typealias Bar<T> = (T) -> String
|
||||
|
||||
fun baz(b: Bar) = b(t)
|
||||
class Foo<out T>(val t: T) {
|
||||
|
||||
fun baz(b: Bar<T>) = b(t)
|
||||
}
|
||||
|
||||
// FILE: B.kt
|
||||
class FooTest {
|
||||
fun baz(): String {
|
||||
val b: Foo<String>.Bar = { "OK" }
|
||||
val b: Bar<String> = { "OK" }
|
||||
return Foo("").baz(b)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -DEPRECATION
|
||||
// !DIAGNOSTICS: -DEPRECATION -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
<!UNDERSCORE_IS_RESERVED!>import kotlin.Deprecated as ___<!>
|
||||
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
// !CHECK_TYPE
|
||||
open class Outer<X, Y> {
|
||||
inner class Inner<Z>
|
||||
|
||||
compiler/testData/diagnostics/tests/generics/innerClasses/implicitArguments/fromSuperClassesLocal.kt
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
// !CHECK_TYPE
|
||||
// !DIAGNOSTICS: -UNUSED_VALUE -VARIABLE_WITH_REDUNDANT_INITIALIZER
|
||||
// !DIAGNOSTICS: -UNUSED_VALUE -VARIABLE_WITH_REDUNDANT_INITIALIZER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class A<R1, R2, R3, R4>
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// !CHECK_TYPE
|
||||
// !DIAGNOSTICS: -UNUSED_VALUE -VARIABLE_WITH_REDUNDANT_INITIALIZER
|
||||
// !DIAGNOSTICS: -UNUSED_VALUE -VARIABLE_WITH_REDUNDANT_INITIALIZER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class A<R1, R2, R3, R4, R5, R6>
|
||||
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
// !CHECK_TYPE
|
||||
open class Outer<X, Y> {
|
||||
inner class Inner<Z>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
class C(val x: Int)
|
||||
|
||||
<!CONFLICTING_OVERLOADS!>typealias CC = C<!>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
// FILE: file1.kt
|
||||
class <!PACKAGE_OR_CLASSIFIER_REDECLARATION!>SomeClass<!>
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
// FILE: file1.kt
|
||||
typealias <!REDECLARATION!>Test<!> = String
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
typealias S = String
|
||||
|
||||
class C {
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class Outer<TO> {
|
||||
typealias LTO = List<TO>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
typealias L<T> = List<T>
|
||||
|
||||
class Outer {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
// FILE: file1.kt
|
||||
package package1
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
interface ICell<T> {
|
||||
val x: T
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
open class Base {
|
||||
typealias Nested = String
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class Outer<T> {
|
||||
class Nested
|
||||
class GenericNested<TT>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class C<T> {
|
||||
inner class D
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class Pair<X, Y>(val x: X, val y: Y)
|
||||
|
||||
class C<T> {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class OuterClass<T1> {
|
||||
class NestedClass<T2>
|
||||
typealias NestedType<T> = NestedClass<T>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class A {
|
||||
public inner class B { }
|
||||
public typealias BAlias = B
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
fun <T> emptyList(): List<T> = null!!
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class Cell<TC>(val x: TC)
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
fun outer() {
|
||||
<!WRONG_MODIFIER_TARGET!>companion<!> typealias TestLocal = Any
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
fun outer() {
|
||||
typealias Test1 = <!RECURSIVE_TYPEALIAS_EXPANSION!>Test1<!>
|
||||
typealias Test2 = <!RECURSIVE_TYPEALIAS_EXPANSION!>List<Test2><!>
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class Pair<T1, T2>(val x1: T1, val x2: T2)
|
||||
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class Pair<T1, T2>(val x1: T1, val x2: T2)
|
||||
|
||||
class C<T> {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class Pair<T1, T2>(val x1: T1, val x2: T2)
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
typealias TopLevel = Any
|
||||
|
||||
interface A {
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias Nested = Any<!>
|
||||
}
|
||||
|
||||
class C {
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias Nested = Any<!>
|
||||
class D {
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias Nested = Any<!>
|
||||
fun foo() {
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias LocalInMember = Any<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias Local = Any<!>
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package
|
||||
|
||||
public fun foo(): kotlin.Unit
|
||||
|
||||
public interface A {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public typealias Nested = kotlin.Any
|
||||
}
|
||||
|
||||
public final class C {
|
||||
public constructor C()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public final class D {
|
||||
public constructor D()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public typealias Nested = kotlin.Any
|
||||
}
|
||||
public typealias Nested = kotlin.Any
|
||||
}
|
||||
public typealias TopLevel = kotlin.Any
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
typealias L<T> = List<T>
|
||||
typealias NL<T> = List<T>?
|
||||
typealias LStar<<!UNUSED_TYPEALIAS_PARAMETER!>T<!>> = List<*>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
class C {
|
||||
typealias Self = C
|
||||
class Nested {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
open class Base {
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
+2
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
abstract class AbstractClass
|
||||
typealias Test1 = AbstractClass
|
||||
val test1 = <!CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS!>Test1()<!>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
|
||||
|
||||
typealias ToTypeParam1<T> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>T<!>
|
||||
typealias ToTypeParam2<T> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>ToTypeParam1<T><!>
|
||||
typealias ToTypeParam3<T1, <!UNUSED_TYPEALIAS_PARAMETER!>T2<!>> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>ToTypeParam2<T1><!>
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
typealias Test1 = String
|
||||
|
||||
fun foo() {
|
||||
@Suppress("TOPLEVEL_TYPEALIASES_ONLY")
|
||||
typealias TestLocal = String
|
||||
}
|
||||
|
||||
class C {
|
||||
@Suppress("TOPLEVEL_TYPEALIASES_ONLY")
|
||||
typealias TestNested = String
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
//ALLOW_AST_ACCESS
|
||||
package test
|
||||
|
||||
open class Pair<T1, T2>
|
||||
open class Triple<T1, T2, T3>
|
||||
|
||||
class Outer<X> {
|
||||
inner class InnerTest1<A>: Pair<X, A>()
|
||||
typealias Test1<A> = Pair<X, A>
|
||||
|
||||
class Nested<Y> {
|
||||
typealias Test2<B> = Pair<Y, B>
|
||||
}
|
||||
|
||||
inner class Inner<Z> {
|
||||
typealias Test3<C> = Triple<X, Z, C>
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package test
|
||||
|
||||
public final class Outer</*0*/ X> {
|
||||
/*primary*/ public constructor Outer</*0*/ X>()
|
||||
|
||||
public final inner class Inner</*0*/ Z> /*captured type parameters: /*1*/ X*/ {
|
||||
/*primary*/ public constructor Inner</*0*/ Z>()
|
||||
public typealias Test3</*0*/ C> /*captured type parameters: /*1*/ Z, /*2*/ X*/ = test.Triple<X, Z, C>
|
||||
}
|
||||
|
||||
public final inner class InnerTest1</*0*/ A> /*captured type parameters: /*1*/ X*/ : test.Pair<X, A> {
|
||||
/*primary*/ public constructor InnerTest1</*0*/ A>()
|
||||
}
|
||||
|
||||
public final class Nested</*0*/ Y> {
|
||||
/*primary*/ public constructor Nested</*0*/ Y>()
|
||||
public typealias Test2</*0*/ B> /*captured type parameters: /*1*/ Y*/ = test.Pair<Y, B>
|
||||
}
|
||||
public typealias Test1</*0*/ A> /*captured type parameters: /*1*/ X*/ = test.Pair<X, A>
|
||||
}
|
||||
|
||||
public open class Pair</*0*/ T1, /*1*/ T2> {
|
||||
/*primary*/ public constructor Pair</*0*/ T1, /*1*/ T2>()
|
||||
}
|
||||
|
||||
public open class Triple</*0*/ T1, /*1*/ T2, /*2*/ T3> {
|
||||
/*primary*/ public constructor Triple</*0*/ T1, /*1*/ T2, /*2*/ T3>()
|
||||
}
|
||||
Reference in New Issue
Block a user