FIR: support inline classes + render class attributes nicer
This commit is contained in:
@@ -291,7 +291,8 @@ class RawFirBuilder(val session: FirSession) {
|
||||
classKind,
|
||||
isInner = classOrObject.hasModifier(KtTokens.INNER_KEYWORD),
|
||||
isCompanion = (classOrObject as? KtObjectDeclaration)?.isCompanion() == true,
|
||||
isData = (classOrObject as? KtClass)?.isData() == true
|
||||
isData = (classOrObject as? KtClass)?.isData() == true,
|
||||
isInline = classOrObject.hasModifier(KtTokens.INLINE_KEYWORD)
|
||||
)
|
||||
classOrObject.extractAnnotationsTo(firClass)
|
||||
classOrObject.extractTypeParametersTo(firClass)
|
||||
|
||||
@@ -143,7 +143,20 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
if (memberDeclaration is FirCallableMember && memberDeclaration.isOverride) {
|
||||
print("override ")
|
||||
}
|
||||
if (memberDeclaration is FirNamedFunction) {
|
||||
if (memberDeclaration is FirClass) {
|
||||
if (memberDeclaration.isInner) {
|
||||
print("inner ")
|
||||
}
|
||||
if (memberDeclaration.isCompanion) {
|
||||
print("companion ")
|
||||
}
|
||||
if (memberDeclaration.isData) {
|
||||
print("data ")
|
||||
}
|
||||
if (memberDeclaration.isInline) {
|
||||
print("inline ")
|
||||
}
|
||||
} else if (memberDeclaration is FirNamedFunction) {
|
||||
if (memberDeclaration.isOperator) {
|
||||
print("operator ")
|
||||
}
|
||||
@@ -194,12 +207,6 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
|
||||
override fun visitClass(klass: FirClass) {
|
||||
visitMemberDeclaration(klass)
|
||||
val attributes = listOfNotNull(
|
||||
"inner".takeIf { klass.isInner },
|
||||
"companion".takeIf { klass.isCompanion },
|
||||
"data".takeIf { klass.isData }
|
||||
)
|
||||
print(attributes.joinToString(prefix = "(", postfix = ")"))
|
||||
if (klass.superTypes.isNotEmpty()) {
|
||||
print(" : ")
|
||||
klass.superTypes.renderSeparated()
|
||||
|
||||
@@ -27,6 +27,8 @@ interface FirClass : FirDeclarationContainer, FirMemberDeclaration, FirSymbolOwn
|
||||
|
||||
val isData: Boolean
|
||||
|
||||
val isInline: Boolean
|
||||
|
||||
override val symbol: FirClassSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
|
||||
@@ -30,7 +30,8 @@ open class FirClassImpl(
|
||||
final override val classKind: ClassKind,
|
||||
final override val isInner: Boolean,
|
||||
final override val isCompanion: Boolean,
|
||||
final override val isData: Boolean
|
||||
final override val isData: Boolean,
|
||||
override val isInline: Boolean
|
||||
) : FirAbstractMemberDeclaration(session, psi, name, visibility, modality, platformStatus), FirClass {
|
||||
|
||||
init {
|
||||
|
||||
+2
-1
@@ -32,7 +32,8 @@ class FirEnumEntryImpl(
|
||||
classKind = ClassKind.ENUM_ENTRY,
|
||||
isInner = false,
|
||||
isCompanion = false,
|
||||
isData = false
|
||||
isData = false,
|
||||
isInline = false
|
||||
), FirEnumEntry {
|
||||
override val arguments = mutableListOf<FirExpression>()
|
||||
}
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
FILE: F.kt
|
||||
public? open class A() {
|
||||
public? open class A {
|
||||
}
|
||||
public? final class B() : A {
|
||||
public? final class B : A {
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
FILE: NestedOfAliasedType.kt
|
||||
public? abstract class A() {
|
||||
public? abstract class Nested() {
|
||||
public? abstract class A {
|
||||
public? abstract class Nested {
|
||||
}
|
||||
|
||||
}
|
||||
public? final typealias TA = A
|
||||
public? final class B() : TA {
|
||||
public? final class NestedInB() : Nested {
|
||||
public? final class B : TA {
|
||||
public? final class NestedInB : Nested {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
FILE: NestedSuperType.kt
|
||||
public? abstract class My() {
|
||||
public? abstract class NestedOne() : My {
|
||||
public? abstract class NestedTwo() : NestedOne {
|
||||
public? abstract class My {
|
||||
public? abstract class NestedOne : My {
|
||||
public? abstract class NestedTwo : NestedOne {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public? final class Your() : My {
|
||||
public? final class NestedThree() : NestedOne {
|
||||
public? final class Your : My {
|
||||
public? final class NestedThree : NestedOne {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
FILE: complexTypes.kt
|
||||
<T, out S> public? final class C() {
|
||||
<R, in P> public? final class D(inner) {
|
||||
<T, out S> public? final class C {
|
||||
<R, in P> public? final inner class D {
|
||||
}
|
||||
|
||||
}
|
||||
public? abstract interface Test() {
|
||||
public? abstract interface Test {
|
||||
public? final? property x(val): a.b.C<out CharSequence, *>.D<in List<*>, *>
|
||||
public? get(): a.b.C<out CharSequence, *>.D<in List<*>, *>
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
FILE: derivedClass.kt
|
||||
<T> public? open class Base() {
|
||||
<T> public? open class Base {
|
||||
public? constructor(x: T)
|
||||
|
||||
}
|
||||
<T : Any> public? final class Derived() : Base<T> {
|
||||
<T : Any> public? final class Derived : Base<T> {
|
||||
public? constructor(x: T): super(STUB)
|
||||
|
||||
}
|
||||
|
||||
+9
-9
@@ -1,31 +1,31 @@
|
||||
FILE: enums.kt
|
||||
public? final enum class Order() {
|
||||
public? final enum entry FIRST() {
|
||||
public? final enum class Order {
|
||||
public? final enum entry FIRST {
|
||||
}
|
||||
|
||||
public? final enum entry SECOND() {
|
||||
public? final enum entry SECOND {
|
||||
}
|
||||
|
||||
public? final enum entry THIRD() {
|
||||
public? final enum entry THIRD {
|
||||
}
|
||||
|
||||
}
|
||||
public? final enum class Planet() {
|
||||
public? final enum class Planet {
|
||||
public? constructor(m: Double, r: Double)
|
||||
|
||||
public? final enum entry MERCURY() : Planet {
|
||||
public? final enum entry MERCURY : Planet {
|
||||
public? open? override function sayHello(): <implicit> {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public? final enum entry VENERA() : Planet {
|
||||
public? final enum entry VENERA : Planet {
|
||||
public? open? override function sayHello(): <implicit> {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public? final enum entry EARTH() : Planet {
|
||||
public? final enum entry EARTH : Planet {
|
||||
public? open? override function sayHello(): <implicit> {
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ FILE: enums.kt
|
||||
|
||||
public? abstract function sayHello(): <implicit>
|
||||
|
||||
public? final object Companion(companion) {
|
||||
public? final companion object Companion {
|
||||
public? final? const property G(val): <implicit> = STUB
|
||||
public? get(): <implicit>
|
||||
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
FILE: enums2.kt
|
||||
public? abstract interface Some() {
|
||||
public? abstract interface Some {
|
||||
}
|
||||
public? final object O1() : Some {
|
||||
public? final object O1 : Some {
|
||||
}
|
||||
public? final object O2() : Some {
|
||||
public? final object O2 : Some {
|
||||
}
|
||||
public? final enum class SomeEnum() {
|
||||
public? final enum class SomeEnum {
|
||||
public? constructor(x: Some)
|
||||
|
||||
public? final enum entry FIRST() : SomeEnum {
|
||||
public? final enum entry FIRST : SomeEnum {
|
||||
public? open? override function check(y: Some): Boolean {
|
||||
STUB
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public? final enum entry SECOND() : SomeEnum {
|
||||
public? final enum entry SECOND : SomeEnum {
|
||||
public? open? override function check(y: Some): Boolean {
|
||||
STUB
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
FILE: expectActual.kt
|
||||
public? final expect class MyClass() {
|
||||
public? final expect class MyClass {
|
||||
}
|
||||
public? final? expect function foo(): String
|
||||
public? final? expect property x(val): Int
|
||||
public? get(): Int
|
||||
public? final actual class MyClass() {
|
||||
public? final actual class MyClass {
|
||||
}
|
||||
public? final? actual function foo(): <implicit> {
|
||||
STUB
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
FILE: genericFunctions.kt
|
||||
public? abstract interface Any() {
|
||||
public? abstract interface Any {
|
||||
}
|
||||
<reified T : Any> public? final? inline function safeAs Any.(): T? {
|
||||
STUB
|
||||
}
|
||||
public? abstract class Summator() {
|
||||
public? abstract class Summator {
|
||||
<T> public? abstract function plus(first: T, second: T): T
|
||||
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
FILE: nestedClass.kt
|
||||
public? abstract class Base() {
|
||||
public? abstract class Base {
|
||||
public? constructor(s: String)
|
||||
|
||||
}
|
||||
public? final class Outer() {
|
||||
public? final class Derived() : Base {
|
||||
public? final class Outer {
|
||||
public? final class Derived : Base {
|
||||
public? constructor(s: String): super(STUB)
|
||||
|
||||
}
|
||||
|
||||
public? final object Obj() : Base {
|
||||
public? final object Obj : Base {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,4 +16,6 @@ class SomeClass : SomeInterface {
|
||||
set(value) {}
|
||||
|
||||
lateinit var fau: Double
|
||||
}
|
||||
}
|
||||
|
||||
inline class InlineClass
|
||||
@@ -1,12 +1,12 @@
|
||||
FILE: simpleClass.kt
|
||||
public? abstract interface SomeInterface() {
|
||||
public? abstract interface SomeInterface {
|
||||
public? final? function foo(x: Int, y: String): String
|
||||
|
||||
public? final? property bar(val): Boolean
|
||||
public? get(): Boolean
|
||||
|
||||
}
|
||||
public? final class SomeClass() : SomeInterface {
|
||||
public? final class SomeClass : SomeInterface {
|
||||
private final? property baz(val): <implicit> = STUB
|
||||
public? get(): <implicit>
|
||||
|
||||
@@ -25,3 +25,5 @@ FILE: simpleClass.kt
|
||||
public? set(value: Double): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
public? final inline class InlineClass {
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FILE: simpleTypeAlias.kt
|
||||
public? abstract interface B() {
|
||||
public? abstract interface B {
|
||||
}
|
||||
public? final typealias C = B
|
||||
public? final class D() : C {
|
||||
public? final class D : C {
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
FILE: typeAliasWithGeneric.kt
|
||||
public? open class A() {
|
||||
public? open class A {
|
||||
}
|
||||
<S, T : A> public? abstract interface B() {
|
||||
<S, T : A> public? abstract interface B {
|
||||
}
|
||||
<T> public? final typealias C = B<T, A>
|
||||
public? final class D() : C<A> {
|
||||
public? final class D : C<A> {
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
FILE: typeParameterVsNested.kt
|
||||
public? abstract interface Some() {
|
||||
public? abstract interface Some {
|
||||
}
|
||||
<T : Some> public? abstract class My() {
|
||||
public? final class T(inner) {
|
||||
<T : Some> public? abstract class My {
|
||||
public? final inner class T {
|
||||
}
|
||||
|
||||
public? abstract property x(val): T
|
||||
@@ -16,7 +16,7 @@ FILE: typeParameterVsNested.kt
|
||||
public? abstract property z(val): test.My.T
|
||||
public? get(): test.My.T
|
||||
|
||||
public? final class Some() : T {
|
||||
public? final class Some : T {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: typeParameters.kt
|
||||
<out T : Any> public? abstract interface List() {
|
||||
<out T : Any> public? abstract interface List {
|
||||
public? final? operator function get(index: Int): T
|
||||
|
||||
public? final? infix function concat(other: List<T>): List<T>
|
||||
@@ -7,9 +7,9 @@ FILE: typeParameters.kt
|
||||
}
|
||||
public? final typealias StringList = List<out String>
|
||||
public? final typealias AnyList = List<*>
|
||||
<out T : Any> public? abstract class AbstractList() : List<T> {
|
||||
<out T : Any> public? abstract class AbstractList : List<T> {
|
||||
}
|
||||
public? final class SomeList() : AbstractList<Int> {
|
||||
public? final class SomeList : AbstractList<Int> {
|
||||
public? open? override function get(index: Int): Int {
|
||||
STUB
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
||||
FILE: F.kt
|
||||
public? open class A() {
|
||||
public? open class A {
|
||||
}
|
||||
public? final class B() : R|A| {
|
||||
public? final class B : R|A| {
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
FILE: NestedOfAliasedType.kt
|
||||
public? abstract class A() {
|
||||
public? abstract class Nested() {
|
||||
public? abstract class A {
|
||||
public? abstract class Nested {
|
||||
}
|
||||
|
||||
}
|
||||
public? final typealias TA = R|A|
|
||||
public? final class B() : R|TA = A| {
|
||||
public? final class NestedInB() : R|A.Nested| {
|
||||
public? final class B : R|TA = A| {
|
||||
public? final class NestedInB : R|A.Nested| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+5
-5
@@ -1,14 +1,14 @@
|
||||
FILE: NestedSuperType.kt
|
||||
public? abstract class My() {
|
||||
public? abstract class NestedOne() : R|p/My| {
|
||||
public? abstract class NestedTwo() : R|p/My.NestedOne| {
|
||||
public? abstract class My {
|
||||
public? abstract class NestedOne : R|p/My| {
|
||||
public? abstract class NestedTwo : R|p/My.NestedOne| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public? final class Your() : R|p/My| {
|
||||
public? final class NestedThree() : R|p/My.NestedOne| {
|
||||
public? final class Your : R|p/My| {
|
||||
public? final class NestedThree : R|p/My.NestedOne| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: TwoDeclarationsInSameFile.kt
|
||||
public? open class A() {
|
||||
public? open class A {
|
||||
}
|
||||
public? final class B() : R|p/A| {
|
||||
public? final class B : R|p/A| {
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
FILE: lists.kt
|
||||
public? abstract class MyStringList() : R|kotlin/collections/List<kotlin/String>| {
|
||||
public? abstract class MyStringList : R|kotlin/collections/List<kotlin/String>| {
|
||||
}
|
||||
public? abstract class MyMutableStringList() : R|kotlin/collections/MutableList<kotlin/String>| {
|
||||
public? abstract class MyMutableStringList : R|kotlin/collections/MutableList<kotlin/String>| {
|
||||
}
|
||||
public? final? function convert R|kotlin/collections/List<kotlin/String>|.(): R|MyStringList| {
|
||||
STUB
|
||||
|
||||
+6
-6
@@ -1,21 +1,21 @@
|
||||
FILE: enum.kt
|
||||
public? abstract interface Some() {
|
||||
public? abstract interface Some {
|
||||
}
|
||||
public? final object O1() : R|Some| {
|
||||
public? final object O1 : R|Some| {
|
||||
}
|
||||
public? final object O2() : R|Some| {
|
||||
public? final object O2 : R|Some| {
|
||||
}
|
||||
public? final enum class SomeEnum() {
|
||||
public? final enum class SomeEnum {
|
||||
public? constructor(x: R|Some|)
|
||||
|
||||
public? final enum entry FIRST() : R|SomeEnum| {
|
||||
public? final enum entry FIRST : R|SomeEnum| {
|
||||
public? open? override function check(y: R|Some|): R|kotlin/Boolean| {
|
||||
STUB
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public? final enum entry SECOND() : R|SomeEnum| {
|
||||
public? final enum entry SECOND : R|SomeEnum| {
|
||||
public? open? override function check(y: R|Some|): R|kotlin/Boolean| {
|
||||
STUB
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
||||
FILE: ft.kt
|
||||
<T> public? abstract interface KMutableProperty1() : R|KProperty1<T>| {
|
||||
<T> public? abstract interface KMutableProperty1 : R|KProperty1<T>| {
|
||||
}
|
||||
<T> public? abstract interface KProperty1() : R|(T) -> kotlin/Int| {
|
||||
<T> public? abstract interface KProperty1 : R|(T) -> kotlin/Int| {
|
||||
}
|
||||
|
||||
+4
-4
@@ -7,11 +7,11 @@ FILE: functionTypes.kt
|
||||
<T> public? final? function simpleWith(t: R|T|, f: R|T.() -> kotlin/Unit|): R|kotlin/Unit| {
|
||||
STUB
|
||||
}
|
||||
<T, R> public? abstract interface KMutableProperty1() : R|KProperty1<T, R>|, R|KMutableProperty<R>| {
|
||||
<T, R> public? abstract interface KMutableProperty1 : R|KProperty1<T, R>|, R|KMutableProperty<R>| {
|
||||
}
|
||||
<T, out R> public? abstract interface KProperty1() : R|KProperty<R>|, R|(T) -> R| {
|
||||
<T, out R> public? abstract interface KProperty1 : R|KProperty<R>|, R|(T) -> R| {
|
||||
}
|
||||
<out R> public? abstract interface KProperty() {
|
||||
<out R> public? abstract interface KProperty {
|
||||
}
|
||||
<R> public? abstract interface KMutableProperty() {
|
||||
<R> public? abstract interface KMutableProperty {
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
FILE: genericFunctions.kt
|
||||
public? abstract interface Any() {
|
||||
public? abstract interface Any {
|
||||
}
|
||||
<reified T : Any> public? final? inline function safeAs R|Any|.(): R|T| {
|
||||
STUB
|
||||
}
|
||||
public? abstract class Summator() {
|
||||
public? abstract class Summator {
|
||||
<T> public? abstract function plus(first: R|T|, second: R|T|): R|T|
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,13 +1,13 @@
|
||||
FILE: Annotations.kt
|
||||
@FILE:R|annotations/Simple|()
|
||||
@R|annotations/WithInt|(STUB) public? abstract class First() {
|
||||
@R|annotations/WithInt|(STUB) public? abstract class First {
|
||||
@R|annotations/Simple|() public? abstract function foo(@WithString(STUB) arg: @R|annotations/Simple|() R|kotlin/Double|): R|error: Not supported: FirImplicitTypeImpl|
|
||||
|
||||
@R|annotations/Complex|(STUB, STUB) public? abstract property v(val): R|kotlin/String|
|
||||
public? get(): R|kotlin/String|
|
||||
|
||||
}
|
||||
@R|annotations/WithString|(STUB) public? final class Second() : @R|annotations/WithInt|(STUB) R|test/First| {
|
||||
@R|annotations/WithString|(STUB) public? final class Second : @R|annotations/WithInt|(STUB) R|test/First| {
|
||||
public? constructor(y: R|kotlin/Char|): super()
|
||||
|
||||
public? open? override function foo(arg: R|kotlin/Double|): R|error: Not supported: FirImplicitTypeImpl| {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
FILE: NestedSuperType.kt
|
||||
public? final class A() : R|b/B| {
|
||||
public? final class NestedInA1() : R|b/B.NestedInB| {
|
||||
public? final class A : R|b/B| {
|
||||
public? final class NestedInA1 : R|b/B.NestedInB| {
|
||||
}
|
||||
|
||||
public? final class NestedInA2() : R|c/C.NestedInC| {
|
||||
public? final class NestedInA2 : R|c/C.NestedInC| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
FILE: TypeAliasExpansion.kt
|
||||
public? final class MyClass() : R|b/TA = b/A| {
|
||||
public? final class MyClass : R|b/TA = b/A| {
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: sealedStarImport.kt
|
||||
public? abstract class Factory() {
|
||||
public? abstract class Factory {
|
||||
public? abstract function createTest(): R|error: Symbol not found|
|
||||
|
||||
public? abstract function createObj(): R|test/Test.O|
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
FILE: simpleAliasedImport.kt
|
||||
public? final class YourClass() : R|b/MyClass| {
|
||||
public? final class YourClass : R|b/MyClass| {
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
FILE: simpleImport.kt
|
||||
public? final class YourClass() : R|b/MyClass| {
|
||||
public? final class YourClass : R|b/MyClass| {
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
FILE: simpleImportNested.kt
|
||||
public? final class YourClass() : R|a/MyClass.MyNested| {
|
||||
public? final class YourClass : R|a/MyClass.MyNested| {
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
FILE: simpleImportOuter.kt
|
||||
public? final class My() : R|a/Outer.Nested| {
|
||||
public? final class My : R|a/Outer.Nested| {
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
FILE: simpleClass.kt
|
||||
public? abstract interface SomeInterface() {
|
||||
public? abstract interface SomeInterface {
|
||||
public? final? function foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
public? final? property bar(val): R|kotlin/Boolean|
|
||||
public? get(): R|kotlin/Boolean|
|
||||
|
||||
}
|
||||
public? final class SomeClass() : R|SomeInterface| {
|
||||
public? final class SomeClass : R|SomeInterface| {
|
||||
private final? property baz(val): R|error: Not supported: FirImplicitTypeImpl| = STUB
|
||||
public? get(): R|error: Not supported: FirImplicitTypeImpl|
|
||||
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
FILE: simpleTypeAlias.kt
|
||||
public? abstract interface B() {
|
||||
public? abstract interface B {
|
||||
}
|
||||
public? final typealias C = R|B|
|
||||
public? final class D() : R|C = B| {
|
||||
public? final class D : R|C = B| {
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
FILE: typeAliasWithGeneric.kt
|
||||
public? open class A() {
|
||||
public? open class A {
|
||||
}
|
||||
<S, T : R|A|> public? abstract interface B() {
|
||||
<S, T : R|A|> public? abstract interface B {
|
||||
}
|
||||
public? final class D() : R|C<A> = B<T, A>| {
|
||||
public? final class D : R|C<A> = B<T, A>| {
|
||||
}
|
||||
<T> public? final typealias C = R|B<T, A>|
|
||||
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
FILE: typeParameterVsNested.kt
|
||||
public? abstract interface Some() {
|
||||
public? abstract interface Some {
|
||||
}
|
||||
<T : R|test/Some|> public? abstract class My() {
|
||||
public? final class T(inner) {
|
||||
<T : R|test/Some|> public? abstract class My {
|
||||
public? final inner class T {
|
||||
}
|
||||
|
||||
public? abstract property x(val): R|T|
|
||||
@@ -16,7 +16,7 @@ FILE: typeParameterVsNested.kt
|
||||
public? abstract property z(val): R|test/My.T|
|
||||
public? get(): R|test/My.T|
|
||||
|
||||
public? final class Some() : R|test/My.T| {
|
||||
public? final class Some : R|test/My.T| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user