FIR visibility rendering: unknown -> public with question

This commit is contained in:
Mikhail Glukhikh
2018-03-21 12:53:37 +03:00
parent b83d921445
commit 737ec37486
28 changed files with 153 additions and 145 deletions
@@ -5,6 +5,8 @@
package org.jetbrains.kotlin.fir package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
@@ -98,6 +100,12 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
callableMember.returnType.accept(this) callableMember.returnType.accept(this)
} }
private fun Visibility.asString() =
when (this) {
Visibilities.UNKNOWN -> "public?"
else -> toString()
}
override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) { override fun visitMemberDeclaration(memberDeclaration: FirMemberDeclaration) {
memberDeclaration.annotations.renderAnnotations() memberDeclaration.annotations.renderAnnotations()
if (memberDeclaration.typeParameters.isNotEmpty()) { if (memberDeclaration.typeParameters.isNotEmpty()) {
@@ -105,7 +113,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
memberDeclaration.typeParameters.renderSeparated() memberDeclaration.typeParameters.renderSeparated()
print("> ") print("> ")
} }
print(memberDeclaration.visibility.toString() + " " + memberDeclaration.modality.name.toLowerCase() + " ") print(memberDeclaration.visibility.asString() + " " + memberDeclaration.modality.name.toLowerCase() + " ")
if (memberDeclaration is FirCallableMember && memberDeclaration.isOverride) { if (memberDeclaration is FirCallableMember && memberDeclaration.isOverride) {
print("override ") print("override ")
} }
@@ -217,7 +225,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
override fun visitConstructor(constructor: FirConstructor) { override fun visitConstructor(constructor: FirConstructor) {
constructor.annotations.renderAnnotations() constructor.annotations.renderAnnotations()
print(constructor.visibility.toString() + " constructor") print(constructor.visibility.asString() + " constructor")
constructor.valueParameters.renderParameters() constructor.valueParameters.renderParameters()
constructor.delegatedConstructor?.accept(this) constructor.delegatedConstructor?.accept(this)
constructor.body?.accept(this) constructor.body?.accept(this)
@@ -228,7 +236,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor) { override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor) {
propertyAccessor.annotations.renderAnnotations() propertyAccessor.annotations.renderAnnotations()
print(propertyAccessor.visibility.toString() + " ") print(propertyAccessor.visibility.asString() + " ")
print(if (propertyAccessor.isGetter) "get" else "set") print(if (propertyAccessor.isGetter) "get" else "set")
propertyAccessor.valueParameters.renderParameters() propertyAccessor.valueParameters.renderParameters()
print(": ") print(": ")
+2 -2
View File
@@ -1,5 +1,5 @@
FILE: F.kt FILE: F.kt
unknown open class A() { public? open class A() {
} }
unknown final class B() : A { public? final class B() : A {
} }
@@ -1,12 +1,12 @@
FILE: NestedOfAliasedType.kt FILE: NestedOfAliasedType.kt
unknown abstract class A() { public? abstract class A() {
unknown abstract class Nested() { public? abstract class Nested() {
} }
} }
unknown final typealias TA = A public? final typealias TA = A
unknown final class B() : TA { public? final class B() : TA {
unknown final class NestedInB() : Nested { public? final class NestedInB() : Nested {
} }
} }
@@ -1,14 +1,14 @@
FILE: NestedSuperType.kt FILE: NestedSuperType.kt
unknown abstract class My() { public? abstract class My() {
unknown abstract class NestedOne() : My { public? abstract class NestedOne() : My {
unknown abstract class NestedTwo() : NestedOne { public? abstract class NestedTwo() : NestedOne {
} }
} }
} }
unknown final class Your() : My { public? final class Your() : My {
unknown final class NestedThree() : NestedOne { public? final class NestedThree() : NestedOne {
} }
} }
@@ -1,11 +1,11 @@
FILE: complexTypes.kt FILE: complexTypes.kt
<T, out S> unknown final class C() { <T, out S> public? final class C() {
<R, in P> unknown final class D(inner) { <R, in P> public? final class D(inner) {
} }
} }
unknown final interface Test() { public? final interface Test() {
unknown final property x(val): a.b.C<out CharSequence, *>.D<in List<*>, *> public? final property x(val): a.b.C<out CharSequence, *>.D<in List<*>, *>
unknown get(): a.b.C<out CharSequence, *>.D<in List<*>, *> public? get(): a.b.C<out CharSequence, *>.D<in List<*>, *>
} }
@@ -1,12 +1,12 @@
FILE: derivedClass.kt FILE: derivedClass.kt
<T> unknown open class Base() { <T> public? open class Base() {
unknown constructor(x: T) public? constructor(x: T)
} }
<T : Any> unknown final class Derived() : Base<T> { <T : Any> public? final class Derived() : Base<T> {
unknown constructor(x: T)STUB public? constructor(x: T)STUB
} }
<T : Any> unknown final function create(x: T): Derived<T> { <T : Any> public? final function create(x: T): Derived<T> {
STUB STUB
} }
+18 -18
View File
@@ -1,44 +1,44 @@
FILE: enums.kt FILE: enums.kt
unknown final enum class Order() { public? final enum class Order() {
unknown final enum entry FIRST() { public? final enum entry FIRST() {
} }
unknown final enum entry SECOND() { public? final enum entry SECOND() {
} }
unknown final enum entry THIRD() { public? final enum entry THIRD() {
} }
} }
unknown final enum class Planet() { public? final enum class Planet() {
unknown constructor(m: Double, r: Double) public? constructor(m: Double, r: Double)
unknown final enum entry MERCURY() : Planet { public? final enum entry MERCURY() : Planet {
unknown final override function sayHello(): <implicit> { public? final override function sayHello(): <implicit> {
} }
} }
unknown final enum entry VENERA() : Planet { public? final enum entry VENERA() : Planet {
unknown final override function sayHello(): <implicit> { public? final override function sayHello(): <implicit> {
} }
} }
unknown final enum entry EARTH() : Planet { public? final enum entry EARTH() : Planet {
unknown final override function sayHello(): <implicit> { public? final override function sayHello(): <implicit> {
} }
} }
unknown final property g(val): Double = STUB public? final property g(val): Double = STUB
unknown get(): Double public? get(): Double
unknown abstract function sayHello(): <implicit> public? abstract function sayHello(): <implicit>
unknown final object Companion(companion) { public? final object Companion(companion) {
unknown final const property G(val): <implicit> = STUB public? final const property G(val): <implicit> = STUB
unknown get(): <implicit> public? get(): <implicit>
} }
+10 -10
View File
@@ -1,27 +1,27 @@
FILE: enums2.kt FILE: enums2.kt
unknown final interface Some() { public? final interface Some() {
} }
unknown final object O1() : Some { public? final object O1() : Some {
} }
unknown final object O2() : Some { public? final object O2() : Some {
} }
unknown final enum class SomeEnum() { public? final enum class SomeEnum() {
unknown constructor(x: Some) public? constructor(x: Some)
unknown final enum entry FIRST() : SomeEnum { public? final enum entry FIRST() : SomeEnum {
unknown final override function check(y: Some): Boolean { public? final override function check(y: Some): Boolean {
STUB STUB
} }
} }
unknown final enum entry SECOND() : SomeEnum { public? final enum entry SECOND() : SomeEnum {
unknown final override function check(y: Some): Boolean { public? final override function check(y: Some): Boolean {
STUB STUB
} }
} }
unknown abstract function check(y: Some): Boolean public? abstract function check(y: Some): Boolean
} }
@@ -1,9 +1,9 @@
FILE: functionTypes.kt FILE: functionTypes.kt
<T> unknown final function simpleRun(f: ( (<no name provided>: T): Unit )): Unit { <T> public? final function simpleRun(f: ( (<no name provided>: T): Unit )): Unit {
STUB STUB
} }
<T, R> unknown final function simpleMapList<T>.(f: ( (<no name provided>: T): R )): R { <T, R> public? final function simpleMapList<T>.(f: ( (<no name provided>: T): R )): R {
} }
<T> unknown final function simpleWith(t: T, f: ( T.(): Unit )): Unit { <T> public? final function simpleWith(t: T, f: ( T.(): Unit )): Unit {
STUB STUB
} }
@@ -1,10 +1,10 @@
FILE: genericFunctions.kt FILE: genericFunctions.kt
unknown final interface Any() { public? final interface Any() {
} }
<T : Any> unknown final inline function safeAsAny.(): T? { <T : Any> public? final inline function safeAsAny.(): T? {
STUB STUB
} }
unknown abstract class Summator() { public? abstract class Summator() {
<T> unknown abstract function plus(first: T, second: T): T <T> public? abstract function plus(first: T, second: T): T
} }
@@ -1,15 +1,15 @@
FILE: nestedClass.kt FILE: nestedClass.kt
unknown abstract class Base() { public? abstract class Base() {
unknown constructor(s: String) public? constructor(s: String)
} }
unknown final class Outer() { public? final class Outer() {
unknown final class Derived() : Base { public? final class Derived() : Base {
unknown constructor(s: String)STUB public? constructor(s: String)STUB
} }
unknown final object Obj() : Base { public? final object Obj() : Base {
} }
} }
+13 -13
View File
@@ -1,27 +1,27 @@
FILE: simpleClass.kt FILE: simpleClass.kt
unknown final interface SomeInterface() { public? final interface SomeInterface() {
unknown final function foo(x: Int, y: String): String public? final function foo(x: Int, y: String): String
unknown final property bar(val): Boolean public? final property bar(val): Boolean
unknown get(): Boolean public? get(): Boolean
} }
unknown final class SomeClass() : SomeInterface { public? final class SomeClass() : SomeInterface {
private final property baz(val): <implicit> = STUB private final property baz(val): <implicit> = STUB
unknown get(): <implicit> public? get(): <implicit>
unknown final override function foo(x: Int, y: String): String { public? final override function foo(x: Int, y: String): String {
} }
unknown final override property bar(var): Boolean public? final override property bar(var): Boolean
unknown get(): <implicit> { public? get(): <implicit> {
STUB STUB
} }
unknown set(value: Boolean): <implicit> { public? set(value: Boolean): <implicit> {
} }
unknown final property fau(var): Double public? final property fau(var): Double
unknown get(): Double public? get(): Double
unknown set(value: Double): R/kotlin.Unit/ public? set(value: Double): R/kotlin.Unit/
} }
@@ -1,3 +1,3 @@
FILE: simpleFun.kt FILE: simpleFun.kt
unknown final function foo(): <implicit> { public? final function foo(): <implicit> {
} }
@@ -1,6 +1,6 @@
FILE: simpleTypeAlias.kt FILE: simpleTypeAlias.kt
unknown final interface B() { public? final interface B() {
} }
unknown final typealias C = B public? final typealias C = B
unknown final class D() : C { public? final class D() : C {
} }
@@ -1,8 +1,8 @@
FILE: typeAliasWithGeneric.kt FILE: typeAliasWithGeneric.kt
unknown open class A() { public? open class A() {
} }
<S, T : A> unknown final interface B() { <S, T : A> public? final interface B() {
} }
unknown final typealias C = B<T, A> public? final typealias C = B<T, A>
unknown final class D() : C<A> { public? final class D() : C<A> {
} }
@@ -1,22 +1,22 @@
FILE: typeParameterVsNested.kt FILE: typeParameterVsNested.kt
unknown final interface Some() { public? final interface Some() {
} }
<T : Some> unknown abstract class My() { <T : Some> public? abstract class My() {
unknown final class T(inner) { public? final class T(inner) {
} }
unknown abstract property x(val): T public? abstract property x(val): T
unknown get(): T public? get(): T
unknown abstract function foo(arg: T): <implicit> public? abstract function foo(arg: T): <implicit>
unknown abstract property y(val): My.T public? abstract property y(val): My.T
unknown get(): My.T public? get(): My.T
unknown abstract property z(val): test.My.T public? abstract property z(val): test.My.T
unknown get(): test.My.T public? get(): test.My.T
unknown final class Some() : T { public? final class Some() : T {
} }
} }
@@ -1,20 +1,20 @@
FILE: typeParameters.kt FILE: typeParameters.kt
<out T : Any> unknown final interface List() { <out T : Any> public? final interface List() {
unknown final operator function get(index: Int): T public? final operator function get(index: Int): T
unknown final infix function concat(other: List<T>): List<T> public? final infix function concat(other: List<T>): List<T>
} }
unknown final typealias StringList = List<out String> public? final typealias StringList = List<out String>
unknown final typealias AnyList = List<*> public? final typealias AnyList = List<*>
<out T : Any> unknown abstract class AbstractList() : List<T> { <out T : Any> public? abstract class AbstractList() : List<T> {
} }
unknown final class SomeList() : AbstractList<Int> { public? final class SomeList() : AbstractList<Int> {
unknown final override function get(index: Int): Int { public? final override function get(index: Int): Int {
STUB STUB
} }
unknown final override function concat(other: List<Int>): List<Int> { public? final override function concat(other: List<Int>): List<Int> {
STUB STUB
} }
+2 -2
View File
@@ -1,5 +1,5 @@
FILE: F.kt FILE: F.kt
(resolved) unknown open class A() { (resolved) public? open class A() {
} }
(resolved) unknown final class B() : R/<root>.A/ { (resolved) public? final class B() : R/<root>.A/ {
} }
+5 -5
View File
@@ -1,12 +1,12 @@
FILE: NestedOfAliasedType.kt FILE: NestedOfAliasedType.kt
(resolved) unknown abstract class A() { (resolved) public? abstract class A() {
unknown abstract class Nested() { public? abstract class Nested() {
} }
} }
(resolved) unknown final typealias TA = R/<root>.A/ (resolved) public? final typealias TA = R/<root>.A/
(resolved) unknown final class B() : R/<root>.TA = <root>.A/ { (resolved) public? final class B() : R/<root>.TA = <root>.A/ {
unknown final class NestedInB() : R/<root>.A.Nested/ { public? final class NestedInB() : R/<root>.A.Nested/ {
} }
} }
+5 -5
View File
@@ -1,14 +1,14 @@
FILE: NestedSuperType.kt FILE: NestedSuperType.kt
(resolved) unknown abstract class My() { (resolved) public? abstract class My() {
unknown abstract class NestedOne() : R/p.My/ { public? abstract class NestedOne() : R/p.My/ {
unknown abstract class NestedTwo() : R/p.My.NestedOne/ { public? abstract class NestedTwo() : R/p.My.NestedOne/ {
} }
} }
} }
(resolved) unknown final class Your() : R/p.My/ { (resolved) public? final class Your() : R/p.My/ {
unknown final class NestedThree() : R/p.My.NestedOne/ { public? final class NestedThree() : R/p.My.NestedOne/ {
} }
} }
@@ -1,5 +1,5 @@
FILE: TwoDeclarationsInSameFile.kt FILE: TwoDeclarationsInSameFile.kt
(resolved) unknown open class A() { (resolved) public? open class A() {
} }
(resolved) unknown final class B() : R/p.A/ { (resolved) public? final class B() : R/p.A/ {
} }
@@ -1,9 +1,9 @@
FILE: NestedSuperType.kt FILE: NestedSuperType.kt
(resolved) unknown final class A() : R/b.B/ { (resolved) public? final class A() : R/b.B/ {
unknown final class NestedInA1() : R/b.B.NestedInB/ { public? final class NestedInA1() : R/b.B.NestedInB/ {
} }
unknown final class NestedInA2() : R/c.C.NestedInC/ { public? final class NestedInA2() : R/c.C.NestedInC/ {
} }
} }
@@ -1,3 +1,3 @@
FILE: simpleAliasedImport.kt FILE: simpleAliasedImport.kt
(resolved) unknown final class YourClass() : R/b.MyClass/ { (resolved) public? final class YourClass() : R/b.MyClass/ {
} }
+1 -1
View File
@@ -1,3 +1,3 @@
FILE: simpleImport.kt FILE: simpleImport.kt
(resolved) unknown final class YourClass() : R/b.MyClass/ { (resolved) public? final class YourClass() : R/b.MyClass/ {
} }
@@ -1,3 +1,3 @@
FILE: simpleImportNested.kt FILE: simpleImportNested.kt
(resolved) unknown final class YourClass() : R/a.MyClass.MyNested/ { (resolved) public? final class YourClass() : R/a.MyClass.MyNested/ {
} }
@@ -1,3 +1,3 @@
FILE: simpleImportOuter.kt FILE: simpleImportOuter.kt
(resolved) unknown final class My() : R/a.Outer.Nested/ { (resolved) public? final class My() : R/a.Outer.Nested/ {
} }
+13 -13
View File
@@ -1,27 +1,27 @@
FILE: simpleClass.kt FILE: simpleClass.kt
(resolved) unknown final interface SomeInterface() { (resolved) public? final interface SomeInterface() {
unknown final function foo(x: R/error: Failed to resolve qualified type/, y: R/error: Failed to resolve qualified type/): R/error: Failed to resolve qualified type/ public? final function foo(x: R/error: Failed to resolve qualified type/, y: R/error: Failed to resolve qualified type/): R/error: Failed to resolve qualified type/
unknown final property bar(val): R/error: Failed to resolve qualified type/ public? final property bar(val): R/error: Failed to resolve qualified type/
unknown get(): R/error: Failed to resolve qualified type/ public? get(): R/error: Failed to resolve qualified type/
} }
(resolved) unknown final class SomeClass() : R/<root>.SomeInterface/ { (resolved) public? final class SomeClass() : R/<root>.SomeInterface/ {
private final property baz(val): R/error: Not supported: FirImplicitTypeImpl/ = STUB private final property baz(val): R/error: Not supported: FirImplicitTypeImpl/ = STUB
unknown get(): R/error: Not supported: FirImplicitTypeImpl/ public? get(): R/error: Not supported: FirImplicitTypeImpl/
unknown final override function foo(x: R/error: Failed to resolve qualified type/, y: R/error: Failed to resolve qualified type/): R/error: Failed to resolve qualified type/ { public? final override function foo(x: R/error: Failed to resolve qualified type/, y: R/error: Failed to resolve qualified type/): R/error: Failed to resolve qualified type/ {
} }
unknown final override property bar(var): R/error: Failed to resolve qualified type/ public? final override property bar(var): R/error: Failed to resolve qualified type/
unknown get(): R/error: Not supported: FirImplicitTypeImpl/ { public? get(): R/error: Not supported: FirImplicitTypeImpl/ {
STUB STUB
} }
unknown set(value: R/error: Failed to resolve qualified type/): R/error: Not supported: FirImplicitTypeImpl/ { public? set(value: R/error: Failed to resolve qualified type/): R/error: Not supported: FirImplicitTypeImpl/ {
} }
unknown final property fau(var): R/error: Failed to resolve qualified type/ public? final property fau(var): R/error: Failed to resolve qualified type/
unknown get(): R/error: Failed to resolve qualified type/ public? get(): R/error: Failed to resolve qualified type/
unknown set(value: R/error: Failed to resolve qualified type/): R/kotlin.Unit/ public? set(value: R/error: Failed to resolve qualified type/): R/kotlin.Unit/
} }
+3 -3
View File
@@ -1,6 +1,6 @@
FILE: simpleTypeAlias.kt FILE: simpleTypeAlias.kt
(resolved) unknown final interface B() { (resolved) public? final interface B() {
} }
(resolved) unknown final typealias C = R/<root>.B/ (resolved) public? final typealias C = R/<root>.B/
(resolved) unknown final class D() : R/<root>.C = <root>.B/ { (resolved) public? final class D() : R/<root>.C = <root>.B/ {
} }