Analysis API: pretty print declarations additionaly to debug rendering in some tests

This commit is contained in:
Ilya Kirillov
2021-11-30 13:16:46 +01:00
parent bad91915a6
commit 6e4c87f138
81 changed files with 918 additions and 23 deletions
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.base.test.SymbolByFqName
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByFqNameTest
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.SymbolsData
import org.jetbrains.kotlin.analysis.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.psi.*
@@ -18,11 +19,11 @@ abstract class AbstractDelegateMemberScopeTest(
configurator: FrontendApiTestConfiguratorService
) : AbstractSymbolByFqNameTest(configurator) {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol> {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData {
val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath)
val symbols = with(symbolData) { toSymbols() }
val classSymbol = symbols.singleOrNull() as? KtClassOrObjectSymbol
?: error("Should be a single class symbol, but $symbols found")
return classSymbol.getDelegatedMemberScope().getCallableSymbols().toList()
return SymbolsData(classSymbol.getDelegatedMemberScope().getCallableSymbols().toList())
}
}
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.base.test.SymbolByFqName
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolByFqNameTest
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.SymbolsData
import org.jetbrains.kotlin.analysis.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.psi.KtFile
@@ -18,11 +19,11 @@ abstract class AbstractMemberScopeByFqNameTest(
configurator: FrontendApiTestConfiguratorService
) : AbstractSymbolByFqNameTest(configurator) {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol> {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData {
val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath)
val symbols = with(symbolData) { toSymbols() }
val classSymbol = symbols.singleOrNull() as? KtClassOrObjectSymbol
?: error("Should be a single class symbol, but $symbols found")
return classSymbol.getMemberScope().getAllSymbols().toList()
return SymbolsData(classSymbol.getMemberScope().getAllSymbols().toList())
}
}
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.expressionMarkerProvider
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.AbstractSymbolTest
import org.jetbrains.kotlin.analysis.api.impl.base.test.symbols.SymbolsData
import org.jetbrains.kotlin.analysis.api.symbols.DebugSymbolRenderer
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
@@ -23,13 +24,13 @@ abstract class AbstractSubstitutionOverridesUnwrappingTest(
configurator: FrontendApiTestConfiguratorService
) : AbstractSymbolTest(configurator) {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol> {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData {
val declarationUnderCaret = testServices.expressionMarkerProvider.getElementOfTypAtCaret<KtClassLikeDeclaration>(ktFile)
val classSymbolUnderCaret = declarationUnderCaret.getSymbol() as KtClassLikeSymbol
require(classSymbolUnderCaret is KtSymbolWithMembers)
return classSymbolUnderCaret.getMemberScope().getAllSymbols().toList()
return SymbolsData(classSymbolUnderCaret.getMemberScope().getAllSymbols().toList())
}
override fun KtAnalysisSession.renderSymbolForComparison(symbol: KtSymbol): String {
@@ -15,9 +15,9 @@ import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
import org.jetbrains.kotlin.test.services.TestServices
abstract class AbstractSymbolByFqNameTest(configurator: FrontendApiTestConfiguratorService) : AbstractSymbolTest(configurator) {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol> {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData {
val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath)
return with(symbolData) { toSymbols() }
return SymbolsData(with(symbolData) { toSymbols() })
}
override fun configureTest(builder: TestConfigurationBuilder) {
@@ -15,10 +15,16 @@ import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
import org.jetbrains.kotlin.test.services.TestServices
abstract class AbstractSymbolByPsiTest(configurator: FrontendApiTestConfiguratorService) : AbstractSymbolTest(configurator) {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol> {
return ktFile.collectDescendantsOfType<KtDeclaration> { it.isValidForSymbolCreation }.map { declaration ->
override val prettyRenderMode: PrettyRenderingMode get() = PrettyRenderingMode.RENDER_SYMBOLS_NESTED
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData {
val allDeclarationSymbols = ktFile.collectDescendantsOfType<KtDeclaration> { it.isValidForSymbolCreation }.map { declaration ->
declaration.getSymbol()
}
return SymbolsData(
allDeclarationSymbols,
listOf(ktFile.getFileSymbol()),
)
}
private val KtDeclaration.isValidForSymbolCreation
@@ -15,8 +15,10 @@ import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.test.services.TestServices
abstract class AbstractSymbolByReferenceTest(configurator: FrontendApiTestConfiguratorService) : AbstractSymbolTest(configurator) {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol> {
override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData {
val referenceExpression = testServices.expressionMarkerProvider.getElementOfTypAtCaret<KtNameReferenceExpression>(ktFile)
return listOfNotNull(referenceExpression.mainReference.resolveToSymbol())
return SymbolsData(
listOfNotNull(referenceExpression.mainReference.resolveToSymbol())
)
}
}
@@ -6,11 +6,16 @@
package org.jetbrains.kotlin.analysis.api.impl.base.test.symbols
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.components.KtDeclarationRendererOptions
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.base.test.test.framework.AbstractHLApiSingleFileTest
import org.jetbrains.kotlin.analysis.api.symbols.DebugSymbolRenderer
import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossibleMemberSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.utils.printer.prettyPrint
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability
@@ -20,6 +25,10 @@ import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.assertions
abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleFileTest(configurator) {
private val renderingOptions = KtDeclarationRendererOptions.DEFAULT
open val prettyRenderMode: PrettyRenderingMode = PrettyRenderingMode.RENDER_SYMBOLS_LINE_BY_LINE
override fun configureTest(builder: TestConfigurationBuilder) {
super.configureTest(builder)
with(builder) {
@@ -27,17 +36,42 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
}
}
abstract fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): List<KtSymbol>
abstract fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData
override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) {
val createPointers = SymbolTestDirectives.DO_NOT_CHECK_SYMBOL_RESTORE !in module.directives
val prettyRenderOptions = when (prettyRenderMode) {
PrettyRenderingMode.RENDER_SYMBOLS_LINE_BY_LINE -> renderingOptions
PrettyRenderingMode.RENDER_SYMBOLS_NESTED -> renderingOptions.copy(renderClassMembers = true)
}
val pointersWithRendered = analyseOnPooledThreadInReadAction(ktFile) {
collectSymbols(ktFile, testServices).map { symbol ->
val (symbols, symbolForPrettyRendering) = collectSymbols(ktFile, testServices)
val pointerWithRenderedSymbol = symbols.map { symbol ->
PointerWithRenderedSymbol(
if (createPointers) symbol.createPointer() else null,
renderSymbolForComparison(symbol)
renderSymbolForComparison(symbol),
)
}
val pointerWithPrettyRenderedSymbol = symbolForPrettyRendering.map { symbol ->
PointerWithRenderedSymbol(
if (createPointers) symbol.createPointer() else null,
when (symbol) {
is KtDeclarationSymbol -> symbol.render(prettyRenderOptions)
is KtFileSymbol -> prettyPrint {
printCollection(symbol.getFileScope().getAllSymbols().asIterable(), separator = "\n\n") {
append((it as KtDeclarationSymbol).render(prettyRenderOptions))
}
}
else -> error(symbol::class.toString())
}
)
}
SymbolPointersData(pointerWithRenderedSymbol, pointerWithPrettyRenderedSymbol)
}
compareResults(pointersWithRendered, testServices)
@@ -45,16 +79,19 @@ abstract class AbstractSymbolTest(configurator: FrontendApiTestConfiguratorServi
configurator.doOutOfBlockModification(ktFile)
if (createPointers) {
restoreSymbolsInOtherReadActionAndCompareResults(ktFile, pointersWithRendered, testServices)
restoreSymbolsInOtherReadActionAndCompareResults(ktFile, pointersWithRendered.pointers, testServices)
}
}
private fun compareResults(
pointersWithRendered: List<PointerWithRenderedSymbol>,
data: SymbolPointersData,
testServices: TestServices,
) {
val actual = pointersWithRendered.joinToString(separator = "\n\n") { it.rendered }
val actual = data.pointers.joinToString(separator = "\n\n") { it.rendered }
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
val actualPretty = data.pointersForPrettyRendering.joinToString(separator = "\n\n") { it.rendered }
testServices.assertions.assertEqualsToTestDataFileSibling(actualPretty, extension = ".pretty.txt")
}
private fun restoreSymbolsInOtherReadActionAndCompareResults(
@@ -86,4 +123,22 @@ private object SymbolTestDirectives : SimpleDirectivesContainer() {
)
}
private data class PointerWithRenderedSymbol(val pointer: KtSymbolPointer<*>?, val rendered: String)
enum class PrettyRenderingMode {
RENDER_SYMBOLS_LINE_BY_LINE,
RENDER_SYMBOLS_NESTED,
}
data class SymbolsData(
val symbols: List<KtSymbol>,
val symbolsForPrettyRendering: List<KtSymbol> = symbols,
)
private data class SymbolPointersData(
val pointers: List<PointerWithRenderedSymbol>,
val pointersForPrettyRendering: List<PointerWithRenderedSymbol>,
)
private data class PointerWithRenderedSymbol(
val pointer: KtSymbolPointer<*>?,
val rendered: String,
)
@@ -0,0 +1 @@
open fun foo()
@@ -0,0 +1 @@
open fun bar()
@@ -0,0 +1,133 @@
infix fun and(other: kotlin.Int): kotlin.Int
operator fun compareTo(other: kotlin.Byte): kotlin.Int
operator fun compareTo(other: kotlin.Double): kotlin.Int
operator fun compareTo(other: kotlin.Float): kotlin.Int
open operator fun compareTo(other: kotlin.Int): kotlin.Int
operator fun compareTo(other: kotlin.Long): kotlin.Int
operator fun compareTo(other: kotlin.Short): kotlin.Int
operator fun dec(): kotlin.Int
operator fun div(other: kotlin.Byte): kotlin.Int
operator fun div(other: kotlin.Double): kotlin.Double
operator fun div(other: kotlin.Float): kotlin.Float
operator fun div(other: kotlin.Int): kotlin.Int
operator fun div(other: kotlin.Long): kotlin.Long
operator fun div(other: kotlin.Short): kotlin.Int
operator fun inc(): kotlin.Int
fun inv(): kotlin.Int
operator fun minus(other: kotlin.Byte): kotlin.Int
operator fun minus(other: kotlin.Double): kotlin.Double
operator fun minus(other: kotlin.Float): kotlin.Float
operator fun minus(other: kotlin.Int): kotlin.Int
operator fun minus(other: kotlin.Long): kotlin.Long
operator fun minus(other: kotlin.Short): kotlin.Int
infix fun or(other: kotlin.Int): kotlin.Int
operator fun plus(other: kotlin.Byte): kotlin.Int
operator fun plus(other: kotlin.Double): kotlin.Double
operator fun plus(other: kotlin.Float): kotlin.Float
operator fun plus(other: kotlin.Int): kotlin.Int
operator fun plus(other: kotlin.Long): kotlin.Long
operator fun plus(other: kotlin.Short): kotlin.Int
operator fun rangeTo(other: kotlin.Byte): kotlin.ranges.IntRange
operator fun rangeTo(other: kotlin.Int): kotlin.ranges.IntRange
operator fun rangeTo(other: kotlin.Long): kotlin.ranges.LongRange
operator fun rangeTo(other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1")
operator fun rem(other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1")
operator fun rem(other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1")
operator fun rem(other: kotlin.Float): kotlin.Float
@kotlin.SinceKotlin(version = "1.1")
operator fun rem(other: kotlin.Int): kotlin.Int
@kotlin.SinceKotlin(version = "1.1")
operator fun rem(other: kotlin.Long): kotlin.Long
@kotlin.SinceKotlin(version = "1.1")
operator fun rem(other: kotlin.Short): kotlin.Int
infix fun shl(bitCount: kotlin.Int): kotlin.Int
infix fun shr(bitCount: kotlin.Int): kotlin.Int
operator fun times(other: kotlin.Byte): kotlin.Int
operator fun times(other: kotlin.Double): kotlin.Double
operator fun times(other: kotlin.Float): kotlin.Float
operator fun times(other: kotlin.Int): kotlin.Int
operator fun times(other: kotlin.Long): kotlin.Long
operator fun times(other: kotlin.Short): kotlin.Int
open fun toByte(): kotlin.Byte
open fun toChar(): kotlin.Char
open fun toDouble(): kotlin.Double
open fun toFloat(): kotlin.Float
open fun toInt(): kotlin.Int
open fun toLong(): kotlin.Long
open fun toShort(): kotlin.Short
operator fun unaryMinus(): kotlin.Int
operator fun unaryPlus(): kotlin.Int
infix fun ushr(bitCount: kotlin.Int): kotlin.Int
infix fun xor(other: kotlin.Int): kotlin.Int
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
companion object
constructor(p0: kotlin.Int)
private constructor()
@@ -0,0 +1,47 @@
fun add(element: E): kotlin.Boolean
fun add(index: kotlin.Int, element: E)
fun addAll(index: kotlin.Int, elements: kotlin.collections.Collection<E>): kotlin.Boolean
fun addAll(elements: kotlin.collections.Collection<E>): kotlin.Boolean
fun clear()
fun listIterator(): kotlin.collections.MutableListIterator<E>
fun listIterator(index: kotlin.Int): kotlin.collections.MutableListIterator<E>
fun remove(element: E): kotlin.Boolean
fun removeAll(elements: kotlin.collections.Collection<E>): kotlin.Boolean
fun removeAt(index: kotlin.Int): E
fun retainAll(elements: kotlin.collections.Collection<E>): kotlin.Boolean
operator fun set(index: kotlin.Int, element: E): E
fun subList(fromIndex: kotlin.Int, toIndex: kotlin.Int): kotlin.collections.MutableList<E>
operator fun contains(element: E): kotlin.Boolean
fun containsAll(elements: kotlin.collections.Collection<E>): kotlin.Boolean
operator fun get(index: kotlin.Int): E
fun indexOf(element: E): kotlin.Int
fun isEmpty(): kotlin.Boolean
operator fun iterator(): kotlin.collections.MutableIterator<E>
fun lastIndexOf(element: E): kotlin.Int
val size: kotlin.Int
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
@@ -0,0 +1,157 @@
private val value: kotlin.CharArray!
private open var hash: kotlin.Int
public/*package*/ open fun hash32(): kotlin.Int
private open var hash32: kotlin.Int
open val length: kotlin.Int
open fun isEmpty(): kotlin.Boolean
open fun codePointAt(p0: kotlin.Int): kotlin.Int
open fun codePointBefore(p0: kotlin.Int): kotlin.Int
open fun codePointCount(p0: kotlin.Int, p1: kotlin.Int): kotlin.Int
open fun offsetByCodePoints(p0: kotlin.Int, p1: kotlin.Int): kotlin.Int
public/*package*/ open fun getChars(p0: kotlin.CharArray!, p1: kotlin.Int)
open fun getChars(p0: kotlin.Int, p1: kotlin.Int, p2: kotlin.CharArray!, p3: kotlin.Int)
@kotlin.Deprecated(message = "Deprecated in Java")
open fun getBytes(p0: kotlin.Int, p1: kotlin.Int, p2: kotlin.ByteArray!, p3: kotlin.Int)
open fun getBytes(p0: kotlin.String!): kotlin.ByteArray!
open fun getBytes(p0: java.nio.charset.Charset!): kotlin.ByteArray!
open fun getBytes(): kotlin.ByteArray!
open operator fun equals(p0: kotlin.Any?): kotlin.Boolean
open fun contentEquals(p0: java.lang.StringBuffer!): kotlin.Boolean
open fun contentEquals(p0: kotlin.CharSequence!): kotlin.Boolean
open fun equalsIgnoreCase(p0: kotlin.String!): kotlin.Boolean
open operator fun compareTo(p0: kotlin.String!): kotlin.Int
open fun compareToIgnoreCase(p0: kotlin.String!): kotlin.Int
open fun regionMatches(p0: kotlin.Int, p1: kotlin.String!, p2: kotlin.Int, p3: kotlin.Int): kotlin.Boolean
open fun regionMatches(p0: kotlin.Boolean, p1: kotlin.Int, p2: kotlin.String!, p3: kotlin.Int, p4: kotlin.Int): kotlin.Boolean
open fun startsWith(p0: kotlin.String!, p1: kotlin.Int): kotlin.Boolean
open fun startsWith(p0: kotlin.String!): kotlin.Boolean
open fun endsWith(p0: kotlin.String!): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun indexOf(p0: kotlin.Int): kotlin.Int
open fun indexOf(p0: kotlin.Int, p1: kotlin.Int): kotlin.Int
open fun indexOf(p0: kotlin.String!): kotlin.Int
open fun indexOf(p0: kotlin.String!, p1: kotlin.Int): kotlin.Int
private open fun indexOfSupplementary(p0: kotlin.Int, p1: kotlin.Int): kotlin.Int
open fun lastIndexOf(p0: kotlin.Int): kotlin.Int
open fun lastIndexOf(p0: kotlin.Int, p1: kotlin.Int): kotlin.Int
open fun lastIndexOf(p0: kotlin.String!): kotlin.Int
open fun lastIndexOf(p0: kotlin.String!, p1: kotlin.Int): kotlin.Int
private open fun lastIndexOfSupplementary(p0: kotlin.Int, p1: kotlin.Int): kotlin.Int
open fun substring(p0: kotlin.Int): kotlin.String!
open fun substring(p0: kotlin.Int, p1: kotlin.Int): kotlin.String!
open fun subSequence(p0: kotlin.Int, p1: kotlin.Int): kotlin.CharSequence
open fun concat(p0: kotlin.String!): kotlin.String!
open fun replace(p0: kotlin.Char, p1: kotlin.Char): kotlin.String!
open fun replace(p0: kotlin.CharSequence!, p1: kotlin.CharSequence!): kotlin.String!
open fun matches(p0: kotlin.String!): kotlin.Boolean
open operator fun contains(p0: kotlin.CharSequence!): kotlin.Boolean
open fun replaceFirst(p0: kotlin.String!, p1: kotlin.String!): kotlin.String!
open fun replaceAll(p0: kotlin.String!, p1: kotlin.String!): kotlin.String!
open fun split(p0: kotlin.String!, p1: kotlin.Int): kotlin.Array<(out) kotlin.String!>!
open fun split(p0: kotlin.String!): kotlin.Array<(out) kotlin.String!>!
open fun toLowerCase(p0: java.util.Locale!): kotlin.String!
open fun toLowerCase(): kotlin.String!
open fun toUpperCase(p0: java.util.Locale!): kotlin.String!
open fun toUpperCase(): kotlin.String!
open fun trim(): kotlin.String!
open fun toString(): kotlin.String
open fun toCharArray(): kotlin.CharArray!
open fun intern(): kotlin.String!
open operator fun get(p0: kotlin.Int): kotlin.Char
private open class CaseInsensitiveComparator : kotlin.Any, java.util.Comparator<kotlin.String!>, java.io.Serializable
constructor()
constructor(p0: kotlin.String!)
constructor(p0: kotlin.CharArray!)
constructor(p0: kotlin.CharArray!, p1: kotlin.Int, p2: kotlin.Int)
constructor(p0: kotlin.IntArray!, p1: kotlin.Int, p2: kotlin.Int)
@kotlin.Deprecated(message = "Deprecated in Java")
constructor(p0: kotlin.ByteArray!, p1: kotlin.Int, p2: kotlin.Int, p3: kotlin.Int)
@kotlin.Deprecated(message = "Deprecated in Java")
constructor(p0: kotlin.ByteArray!, p1: kotlin.Int)
constructor(p0: kotlin.ByteArray!, p1: kotlin.Int, p2: kotlin.Int, p3: kotlin.String!)
constructor(p0: kotlin.ByteArray!, p1: kotlin.Int, p2: kotlin.Int, p3: java.nio.charset.Charset!)
constructor(p0: kotlin.ByteArray!, p1: kotlin.String!)
constructor(p0: kotlin.ByteArray!, p1: java.nio.charset.Charset!)
constructor(p0: kotlin.ByteArray!, p1: kotlin.Int, p2: kotlin.Int)
constructor(p0: kotlin.ByteArray!)
constructor(p0: java.lang.StringBuffer!)
constructor(p0: java.lang.StringBuilder!)
public/*package*/ constructor(p0: kotlin.CharArray!, p1: kotlin.Boolean)
@kotlin.Deprecated(message = "Deprecated in Java")
public/*package*/ constructor(p0: kotlin.Int, p1: kotlin.Int, p2: kotlin.CharArray!)
@@ -10,6 +10,7 @@ KtJavaFieldSymbol:
returnType: ft<kotlin/CharArray, kotlin/CharArray?>
symbolKind: CLASS_MEMBER
visibility: Private
getDispatchReceiver(): java/lang/String
deprecationStatus: null
KtJavaFieldSymbol:
@@ -24,6 +25,7 @@ KtJavaFieldSymbol:
returnType: kotlin/Int
symbolKind: CLASS_MEMBER
visibility: Private
getDispatchReceiver(): java/lang/String
deprecationStatus: null
KtFunctionSymbol:
@@ -62,6 +64,7 @@ KtJavaFieldSymbol:
returnType: kotlin/Int
symbolKind: CLASS_MEMBER
visibility: Private
getDispatchReceiver(): java/lang/String
deprecationStatus: null
KtSyntheticJavaPropertySymbol:
@@ -0,0 +1,7 @@
operator fun invoke(p1: P1, p2: P2): R
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
@@ -0,0 +1,11 @@
abstract fun <TT1 : test.Foo, TT2 : test.OtherInterface> funWithOuterAndOwnGenericsAndBounds(tT1: TT1?, tT2: TT2?)
open val <TT1 : test.Foo, TT2 : test.OtherInterface> test.TwoParams<TT1, TT2>.propWithOuterAndOwnGenericsAndBounds: test.Foo?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,15 @@
fun noGeneric()
fun withOuterGeneric(t: test.Foo)
fun <TT> withOwnGeneric(tt: TT)
fun <TT> withOuterAndOwnGeneric(t: test.Foo, tt: TT)
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,15 @@
val noGeneric: test.Foo?
val withOuterGeneric: test.Foo?
val <TT> TT.withOwnGeneric: TT?
val <TT> TT.withOuterAndOwnGeneric: test.Foo?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,17 @@
fun noGenerics_InterfaceWithFun()
open fun withOuterGeneric_InterfaceWithFun(): test.SomeClass2
fun noGenerics_InterfaceWithFunBase()
fun withOuterGenericT1_InterfaceWithFunBase(): test.SomeClass1
open fun withOuterGenericT2_InterfaceWithFunBase(): test.SomeClass2
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,27 @@
val noGenerics_InterfaceWithVal: test.SomeClass1
abstract val withOuterGeneric_InterfaceWithVal: test.SomeClass2
val <Own> Own.withOwnGeneric_InterfaceWithVal: test.SomeClass1
abstract val <Own> Own.withOwnAndOuterGeneric_InterfaceWithVal: test.SomeClass2
val noGenerics_InterfaceWithValBase: test.SomeClass1
val withOuterGenericT1_InterfaceWithValBase: test.SomeClass1
abstract val withOuterGenericT2_InterfaceWithValBase: test.SomeClass2
val <Own> Own.withOwnGeneric_InterfaceWithValBase: test.SomeClass1
val <Own> Own.withOwnAndOuterGenericT1_InterfaceWithValBase: test.SomeClass1
abstract val <Own> Own.withOwnAndOuterGenericT2_InterfaceWithValBase: test.SomeClass2
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,11 @@
fun noGenerics()
fun withOuter(): Outer?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,13 @@
fun noGenerics()
fun withOuter(): Outer?
fun withOuterAndOwn(t: test.SomeClass): Outer?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,11 @@
fun noGeneric()
fun withOuter(): Outer?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
inner constructor()
@@ -0,0 +1,13 @@
fun noGeneric()
fun withOuter(): Outer?
fun withOwnAndOuter(t: test.SomeClass): Outer?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
inner constructor()
@@ -0,0 +1,11 @@
fun noGeneric()
fun withOuter(): test.SomeClass?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
inner constructor()
@@ -0,0 +1,11 @@
fun noGeneric()
fun withOuter(): T?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
inner constructor()
@@ -0,0 +1,13 @@
fun noGeneric()
fun withOuter(): test.SomeClass?
fun withOwnAndOuter(t: test.SomeClass): test.SomeClass?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
inner constructor()
@@ -0,0 +1,33 @@
fun size(): kotlin.Int
fun isEmpty(): kotlin.Boolean
operator fun contains(p0: kotlin.Any!): kotlin.Boolean
abstract operator fun iterator(): kotlin.collections.MutableIterator<test.SomeClass!>
fun toArray(): kotlin.Array<(out) kotlin.Any!>!
fun <T : kotlin.Any!> toArray(p0: kotlin.Array<(out) T!>!): kotlin.Array<(out) T!>!
abstract fun add(p0: test.SomeClass!): kotlin.Boolean
fun remove(p0: kotlin.Any!): kotlin.Boolean
fun containsAll(p0: kotlin.collections.(Mutable)Collection<*>!): kotlin.Boolean
abstract fun addAll(p0: kotlin.collections.(Mutable)Collection<out test.SomeClass!>!): kotlin.Boolean
fun removeAll(p0: kotlin.collections.(Mutable)Collection<*>!): kotlin.Boolean
fun retainAll(p0: kotlin.collections.(Mutable)Collection<*>!): kotlin.Boolean
fun clear()
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,11 @@
abstract fun <TT1 : test.Foo, TT2 : test.OtherInterface> funWithOuterAndOwnGenericsAndBounds(tT1: TT1?, tT2: TT2?)
open val <TT1 : test.Foo, TT2 : test.OtherInterface> test.TwoParams<TT1, TT2>.propWithOuterAndOwnGenericsAndBounds: test.Foo?
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1,11 @@
val <Own : test.ClassA> Own.withOwnGeneric_InterfaceWithValBase: test.ClassA
abstract val <Own : test.ClassB> Own.withOwnAndOuterGenericAsTypeBound_InterfaceWithValBase: test.ClassA
open operator fun equals(other: kotlin.Any?): kotlin.Boolean
open fun hashCode(): kotlin.Int
open fun toString(): kotlin.String
constructor()
@@ -0,0 +1 @@
interface Lazy<out T>
@@ -0,0 +1 @@
class String : java.io.Serializable, kotlin.Comparable<kotlin.Stringkotlin.String?!>, kotlin.CharSequence
@@ -0,0 +1 @@
class String : kotlin.Any, java.io.Serializable, kotlin.Comparable<kotlin.String!>, kotlin.CharSequence
@@ -0,0 +1 @@
SYNCHRONIZED
@@ -0,0 +1,6 @@
fun <T> listOf(element: T): kotlin.collections.List<T>
@kotlin.internal.InlineOnly
inline fun <T> listOf(): kotlin.collections.List<T>
fun <T> listOf(vararg elements: T): kotlin.collections.List<T>
@@ -0,0 +1 @@
interface Iterator<out T>
@@ -0,0 +1 @@
enum class FileWalkDirection
@@ -0,0 +1 @@
operator fun get(index: kotlin.Int): E
@@ -0,0 +1,3 @@
fun listIterator(): kotlin.collections.ListIterator<E>
fun listIterator(index: kotlin.Int): kotlin.collections.ListIterator<E>
@@ -0,0 +1 @@
interface MutableEntry<K, V> : kotlin.collections.Map.Entry<K, V>
@@ -0,0 +1,13 @@
annotation class Anno {
constructor(param1: kotlin.String, param2: kotlin.Int)
val param1: kotlin.String
val param2: kotlin.Int
}
@Anno(param1 = "param", param2 = 2)
class X {
@Anno(param1 = "funparam", param2 = 3)
fun x()
}
@@ -0,0 +1,3 @@
class AnonymousContainer {
val anonymousObject: java.lang.Runnable
}
@@ -0,0 +1 @@
var p: kotlin.Int
@@ -0,0 +1 @@
class A
@@ -0,0 +1,3 @@
class A {
val i: kotlin.Int
}
@@ -0,0 +1,5 @@
class A {
val a: kotlin.Int
fun x(): kotlin.Int
}
@@ -0,0 +1 @@
class A
@@ -0,0 +1,5 @@
class A {
constructor(x: kotlin.Int)
constructor(y: kotlin.Int, z: kotlin.String)
}
@@ -0,0 +1 @@
class A<T, R>
@@ -0,0 +1,17 @@
class MyColor {
constructor(x: kotlin.Int, y: kotlin.Int, z: kotlin.Int)
val x: kotlin.Int
val y: kotlin.Int
val z: kotlin.Int
}
class Some {
val delegate: MyColor
val lambda: kotlin.Lazy<MyColor>
val nonLazy: MyColor
}
@@ -0,0 +1,39 @@
@kotlin.Deprecated(message = "don't use i")
val i: kotlin.Int
val i2: kotlin.Int
@kotlin.Deprecated(message = "don't use getter of i2")
get()
var i3: kotlin.Int
get()
@kotlin.Deprecated(message = "don't use getter of i3")
set(value: kotlin.Int)
var i4: kotlin.Int
@kotlin.Deprecated(message = "don't use getter of i4")
get()
@kotlin.Deprecated(message = "don't use setter of i4")
set(value: kotlin.Int)
@kotlin.Deprecated(message = "don't use f")
fun f(): kotlin.Int
@kotlin.Deprecated(level = kotlin.DeprecationLevel.ERROR, message = "don't use j")
val j: kotlin.Int
@kotlin.Deprecated(level = kotlin.DeprecationLevel.HIDDEN, message = "don't use j2")
val j2: kotlin.Int
val j2: kotlin.Int
@kotlin.Deprecated(message = "don't use MyClass")
class MyClass
class Foo {
@kotlin.Deprecated(message = "don't use i2")
val i2: kotlin.Int
@kotlin.Deprecated(message = "don't use f2")
fun f2(): kotlin.Int
}
@@ -123,7 +123,7 @@ KtKotlinPropertySymbol:
getterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=true, message=don't use getter of i4)
javaGetterName: getI4
javaSetterName: setI4
setterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=true, message=don't use getter of i4)
setterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=true, message=don't use setter of i4)
KtFunctionSymbol:
annotationsList: [
@@ -10,7 +10,7 @@ val i2: Int = 1
var i3: Int = 1
@get:Deprecated("don't use getter of i4")
@set:Deprecated("don't use getter of i4")
@set:Deprecated("don't use setter of i4")
var i4: Int = 1
@Deprecated("don't use f")
@@ -0,0 +1,39 @@
@kotlin.Deprecated(message = "don't use i")
val i: kotlin.Int
val i2: kotlin.Int
@kotlin.Deprecated(message = "don't use getter of i2")
get()
var i3: kotlin.Int
@kotlin.Deprecated(message = "don't use getter of i3")
set(value: kotlin.Int)
var i4: kotlin.Int
@kotlin.Deprecated(message = "don't use getter of i4")
get()
@kotlin.Deprecated(message = "don't use setter of i4")
set(value: kotlin.Int)
@kotlin.Deprecated(message = "don't use f")
fun f(): kotlin.Int
@kotlin.Deprecated(level = kotlin.DeprecationLevel.ERROR, message = "don't use j")
val j: kotlin.Int
@kotlin.Deprecated(level = kotlin.DeprecationLevel.HIDDEN, message = "don't use j2")
val j2: kotlin.Int
@java.lang.Deprecated
val j2: kotlin.Int
@kotlin.Deprecated(message = "don't use MyClass")
class MyClass
class Foo {
@kotlin.Deprecated(message = "don't use i2")
val i2: kotlin.Int
@kotlin.Deprecated(message = "don't use f2")
fun f2(): kotlin.Int
}
@@ -123,7 +123,7 @@ KtKotlinPropertySymbol:
getterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=true, message=don't use getter of i4)
javaGetterName: getI4
javaSetterName: setI4
setterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=true, message=don't use getter of i4)
setterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=true, message=don't use setter of i4)
KtFunctionSymbol:
annotationsList: [
@@ -358,4 +358,4 @@ KtKotlinPropertySymbol:
getterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=false, message=null)
javaGetterName: getJ2
javaSetterName: null
setterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=false, message=null)
setterDeprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=false, message=null)
@@ -0,0 +1,4 @@
enum class X {
Y,
Z
}
@@ -0,0 +1,9 @@
enum class Style {
SHEET;
constructor(value: kotlin.String)
abstract val exitAnimation: kotlin.String
val value: kotlin.String
}
@@ -0,0 +1,9 @@
enum class Style {
SHEET;
constructor(value: kotlin.String)
val value: kotlin.String
abstract val exitAnimation: kotlin.String
}
@@ -0,0 +1 @@
fun kotlin.String.foo(): kotlin.Int
@@ -0,0 +1 @@
fun usage()
@@ -0,0 +1 @@
fun foo(x: kotlin.Int)
@@ -0,0 +1 @@
fun <X> foo(x: X)
@@ -0,0 +1,3 @@
class A {
constructor(i: kotlin.Int)
}
@@ -0,0 +1 @@
fun foo(): kotlin.Int
@@ -0,0 +1,3 @@
fun foo()
private inline fun bar(lmbd: (kotlin.Int) -> kotlin.Int)
@@ -0,0 +1,13 @@
class Foo {
var i: kotlin.Int
@kotlin.jvm.JvmName(name = "getMyI")
get()
@kotlin.jvm.JvmName(name = "setMyI")
set(value: kotlin.Int)
var j: kotlin.Int
@kotlin.jvm.JvmName(name = "getMyJ")
get()
@kotlin.jvm.JvmName(name = "setMyJ")
set(value: kotlin.Int)
}
@@ -0,0 +1 @@
fun yyy()
@@ -0,0 +1,5 @@
class A {
fun x(): kotlin.Int
fun y()
}
@@ -0,0 +1,5 @@
class A {
val x: kotlin.Int
val kotlin.Int.y: kotlin.Int
}
@@ -0,0 +1,7 @@
class X<T> {
inner class Y<T1>
class Z<T2>
fun <T3> foo()
}
@@ -0,0 +1,3 @@
fun x(): kotlin.Int
fun y()
@@ -0,0 +1,3 @@
val x: kotlin.Int
val kotlin.Int.y: kotlin.Int
@@ -0,0 +1,3 @@
class X<T>
private typealias Y<Z> = X<Z>
@@ -0,0 +1,19 @@
@kotlin.annotation.Target(allowedTargets = [kotlin.annotation.AnnotationTarget.TYPE])
annotation class Anno1
@kotlin.annotation.Target(allowedTargets = [kotlin.annotation.AnnotationTarget.TYPE])
annotation class Anno2
@kotlin.annotation.Target(allowedTargets = [kotlin.annotation.AnnotationTarget.TYPE])
annotation class Anno3
@kotlin.annotation.Target(allowedTargets = [kotlin.annotation.AnnotationTarget.TYPE])
annotation class Anno4
interface I
class X : @Anno1 I {
fun f(arg: @Anno2 I): @Anno3 I
val x: @Anno4 I
}
@@ -0,0 +1,7 @@
fun primitive(vararg a: kotlin.Int)
fun nullablePrimitive(vararg b: kotlin.Float?)
fun nonPrimitive(vararg c: kotlin.Any)
fun error(vararg d: ERROR_TYPE)
@@ -0,0 +1,7 @@
fun primitive(vararg a: kotlin.Int)
fun nullablePrimitive(vararg b: kotlin.Float?)
fun nonPrimitive(vararg c: kotlin.Any)
fun error(vararg d: Unresolved)
@@ -0,0 +1 @@
field
@@ -0,0 +1 @@
constructor(p0: kotlin.collections.MutableCollection<out EE?!>kotlin.collections.Collection<EE?!>?!)
@@ -0,0 +1 @@
constructor(p0: kotlin.collections.(Mutable)Collection<out E!>!)
@@ -0,0 +1 @@
fun withOuter(): Outer?
@@ -0,0 +1 @@
fun withOuter(): Outer?
@@ -0,0 +1 @@
fun Runnable(function: () -> kotlin.Unit): java.lang.Runnable