Get rid of descriptors, resolved classifiers, + some cleanup
This commit is contained in:
@@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
|
|
||||||
interface ConeDescriptor
|
|
||||||
|
|
||||||
interface ConeClassifierDescriptor : ConeDescriptor
|
|
||||||
|
|
||||||
interface ConeClassifierDescriptorWithTypeParameters : ConeClassifierDescriptor {
|
|
||||||
val typeParameters: List<ConeTypeParameterDescriptor>
|
|
||||||
|
|
||||||
val classId: ClassId
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ConeTypeParameterDescriptor : ConeClassifierDescriptor {
|
|
||||||
val symbol: ConeTypeParameterSymbol
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ConeTypeAliasDescriptor : ConeClassifierDescriptorWithTypeParameters {
|
|
||||||
val expandedType: ConeKotlinType
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ConeClassDescriptor : ConeClassifierDescriptorWithTypeParameters {
|
|
||||||
val superTypes: List<ConeKotlinType>
|
|
||||||
val nestedClassifiers: List<ConeClassifierDescriptor>
|
|
||||||
}
|
|
||||||
@@ -35,7 +35,7 @@ class ConeKotlinErrorType(val reason: String) : ConeKotlinType() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConeClassErrorType(val reason: String): ConeClassLikeType() {
|
class ConeClassErrorType(val reason: String) : ConeClassLikeType() {
|
||||||
override val symbol: ConeClassLikeSymbol
|
override val symbol: ConeClassLikeSymbol
|
||||||
get() = error("!")
|
get() = error("!")
|
||||||
override val typeArguments: List<ConeKotlinTypeProjection>
|
override val typeArguments: List<ConeKotlinTypeProjection>
|
||||||
|
|||||||
-19
@@ -1,19 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirBasedDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.FirDescriptorOwner
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
|
||||||
|
|
||||||
abstract class AbstractFirBasedDescriptor<E> : FirBasedDescriptor<E> where E : FirElement, E : FirDescriptorOwner<E> {
|
|
||||||
|
|
||||||
override lateinit var fir: E
|
|
||||||
|
|
||||||
override fun bind(e: E) {
|
|
||||||
fir = e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedClass
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedEnumEntry
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeClassDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeClassifierDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeParameterDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
|
|
||||||
class ConeClassDescriptorImpl(
|
|
||||||
override val typeParameters: List<ConeTypeParameterDescriptor>,
|
|
||||||
override val classId: ClassId,
|
|
||||||
override val superTypes: List<ConeKotlinType>,
|
|
||||||
override val nestedClassifiers: List<ConeClassifierDescriptor>
|
|
||||||
) : ConeClassDescriptor, AbstractFirBasedDescriptor<FirResolvedClass>()
|
|
||||||
|
|
||||||
class ConeEnumEntryDescriptorImpl(
|
|
||||||
override val typeParameters: List<ConeTypeParameterDescriptor>,
|
|
||||||
override val classId: ClassId,
|
|
||||||
override val superTypes: List<ConeKotlinType>,
|
|
||||||
override val nestedClassifiers: List<ConeClassifierDescriptor>
|
|
||||||
) : ConeClassDescriptor, AbstractFirBasedDescriptor<FirResolvedEnumEntry>()
|
|
||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedTypeAlias
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeAliasDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeParameterDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
|
|
||||||
class ConeTypeAliasDescriptorImpl(
|
|
||||||
override val typeParameters: List<ConeTypeParameterDescriptor>,
|
|
||||||
override val classId: ClassId,
|
|
||||||
override val expandedType: ConeKotlinType
|
|
||||||
) : ConeTypeAliasDescriptor, AbstractFirBasedDescriptor<FirResolvedTypeAlias>()
|
|
||||||
-15
@@ -1,15 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedTypeParameter
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeParameterDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
class ConeTypeParameterDescriptorImpl(
|
|
||||||
override val symbol: ConeTypeParameterSymbol
|
|
||||||
) : ConeTypeParameterDescriptor, AbstractFirBasedDescriptor<FirResolvedTypeParameter>()
|
|
||||||
-125
@@ -1,125 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirDescriptorOwner
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedClassImpl
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedEnumEntryImpl
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedTypeAliasImpl
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedTypeParameterImpl
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeClassifierDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeTypeParameterDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedType
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.compose
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
class FirClassifierResolveTransformer : FirTransformer<Nothing?>() {
|
|
||||||
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
|
|
||||||
return element.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
lateinit var packageFqName: FqName
|
|
||||||
|
|
||||||
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
|
|
||||||
packageFqName = file.packageFqName
|
|
||||||
return file.also { it.transformChildren(this, null) }.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
private var classLikeName: FqName = FqName.ROOT
|
|
||||||
|
|
||||||
override fun transformClass(klass: FirClass, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
val actualClassName = classLikeName.child(klass.name)
|
|
||||||
classLikeName = actualClassName
|
|
||||||
|
|
||||||
klass.transformChildren(this, data)
|
|
||||||
|
|
||||||
val superTypes = klass.superTypes.map {
|
|
||||||
(it as FirResolvedType).type
|
|
||||||
}
|
|
||||||
|
|
||||||
classLikeName = classLikeName.parent()
|
|
||||||
|
|
||||||
val typeParameters =
|
|
||||||
klass.typeParameters.filterIsInstance<FirDescriptorOwner<*>>().mapNotNull { it.descriptor as? ConeTypeParameterDescriptor }
|
|
||||||
|
|
||||||
val nestedClassifiers =
|
|
||||||
klass.declarations.filterIsInstance<FirDescriptorOwner<*>>().mapNotNull { it.descriptor as? ConeClassifierDescriptor }
|
|
||||||
|
|
||||||
val classId = ClassId(packageFqName, actualClassName, false)
|
|
||||||
|
|
||||||
return when (klass) {
|
|
||||||
is FirEnumEntry -> {
|
|
||||||
val descriptor = ConeEnumEntryDescriptorImpl(typeParameters, classId, superTypes, nestedClassifiers)
|
|
||||||
FirResolvedEnumEntryImpl(klass, descriptor).compose()
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
val descriptor = ConeClassDescriptorImpl(typeParameters, classId, superTypes, nestedClassifiers)
|
|
||||||
FirResolvedClassImpl(klass, descriptor).compose()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformResolvedClass(resolvedClass: FirResolvedClass, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
return resolvedClass.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
var memberName: Name? = null
|
|
||||||
|
|
||||||
override fun transformNamedFunction(namedFunction: FirNamedFunction, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
memberName = namedFunction.name
|
|
||||||
return super.transformNamedFunction(namedFunction, data).also {
|
|
||||||
memberName = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
val actualClassName = classLikeName.child(typeAlias.name)
|
|
||||||
classLikeName = actualClassName
|
|
||||||
|
|
||||||
typeAlias.transformChildren(this, data)
|
|
||||||
|
|
||||||
classLikeName = classLikeName.parent()
|
|
||||||
|
|
||||||
val expandedType = (typeAlias.expandedType as FirResolvedType).type
|
|
||||||
val typeParameters =
|
|
||||||
typeAlias.typeParameters.filterIsInstance<FirDescriptorOwner<*>>().mapNotNull { it.descriptor as? ConeTypeParameterDescriptor }
|
|
||||||
|
|
||||||
val descriptor = ConeTypeAliasDescriptorImpl(
|
|
||||||
typeParameters,
|
|
||||||
ClassId(packageFqName, classLikeName.child(typeAlias.name), false),
|
|
||||||
expandedType
|
|
||||||
)
|
|
||||||
|
|
||||||
return FirResolvedTypeAliasImpl(typeAlias, descriptor).compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformResolvedTypeAlias(
|
|
||||||
resolvedTypeAlias: FirResolvedTypeAlias,
|
|
||||||
data: Nothing?
|
|
||||||
): CompositeTransformResult<FirDeclaration> {
|
|
||||||
return resolvedTypeAlias.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformResolvedTypeParameter(
|
|
||||||
resolvedTypeParameter: FirResolvedTypeParameter,
|
|
||||||
data: Nothing?
|
|
||||||
): CompositeTransformResult<FirDeclaration> {
|
|
||||||
return resolvedTypeParameter.compose()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformTypeParameter(typeParameter: FirTypeParameter, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
|
||||||
typeParameter.transformChildren(this, data)
|
|
||||||
|
|
||||||
val descriptor = ConeTypeParameterDescriptorImpl(typeParameter.symbol)
|
|
||||||
return FirResolvedTypeParameterImpl(typeParameter, descriptor).compose()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-1
@@ -44,7 +44,7 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
|
|||||||
ProtoBuf.PackageFragment.parseFrom(stream, BuiltInSerializerProtocol.extensionRegistry)
|
ProtoBuf.PackageFragment.parseFrom(stream, BuiltInSerializerProtocol.extensionRegistry)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected val nameResolver = NameResolverImpl(packageProto.strings, packageProto.qualifiedNames)
|
private val nameResolver = NameResolverImpl(packageProto.strings, packageProto.qualifiedNames)
|
||||||
|
|
||||||
val classDataFinder = ProtoBasedClassDataFinder(packageProto, nameResolver, version) { SourceElement.NO_SOURCE }
|
val classDataFinder = ProtoBasedClassDataFinder(packageProto, nameResolver, version) { SourceElement.NO_SOURCE }
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
|
|
||||||
class FirProviderImpl(val session: FirSession) : FirProvider {
|
class FirProviderImpl(val session: FirSession) : FirProvider {
|
||||||
override fun getFirClassifierBySymbol(symbol: ConeSymbol): FirNamedDeclaration? {
|
override fun getFirClassifierBySymbol(symbol: ConeSymbol): FirNamedDeclaration? {
|
||||||
return when(symbol) {
|
return when (symbol) {
|
||||||
is FirBasedSymbol<*> -> symbol.fir as? FirNamedDeclaration
|
is FirBasedSymbol<*> -> symbol.fir as? FirNamedDeclaration
|
||||||
is ConeClassLikeSymbol -> getFirClassifierByFqName(symbol.classId)
|
is ConeClassLikeSymbol -> getFirClassifierByFqName(symbol.classId)
|
||||||
else -> error("!")
|
else -> error("!")
|
||||||
|
|||||||
-2
@@ -6,11 +6,9 @@
|
|||||||
package org.jetbrains.kotlin.fir.resolve.impl
|
package org.jetbrains.kotlin.fir.resolve.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
|
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirQualifierPart
|
import org.jetbrains.kotlin.fir.types.FirQualifierPart
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|||||||
+2
-7
@@ -5,11 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.resolve.impl
|
package org.jetbrains.kotlin.fir.resolve.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
|
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
import org.jetbrains.kotlin.fir.scopes.FirPosition
|
||||||
@@ -39,7 +34,7 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ConeSymbol.toConeKotlinType(parts: List<FirQualifierPart>, session: FirSession): ConeKotlinType? {
|
private fun ConeSymbol.toConeKotlinType(parts: List<FirQualifierPart>): ConeKotlinType? {
|
||||||
|
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is ConeTypeParameterSymbol -> {
|
is ConeTypeParameterSymbol -> {
|
||||||
@@ -94,7 +89,7 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
|
|
||||||
override fun resolveUserType(type: FirUserType, symbol: ConeSymbol?, scope: FirScope): ConeKotlinType {
|
override fun resolveUserType(type: FirUserType, symbol: ConeSymbol?, scope: FirScope): ConeKotlinType {
|
||||||
symbol ?: return ConeKotlinErrorType("Symbol not found")
|
symbol ?: return ConeKotlinErrorType("Symbol not found")
|
||||||
return symbol.toConeKotlinType(type.qualifier, type.session) ?: ConeKotlinErrorType("Failed to resolve qualified type")
|
return symbol.toConeKotlinType(type.qualifier) ?: ConeKotlinErrorType("Failed to resolve qualified type")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolveType(
|
override fun resolveType(
|
||||||
|
|||||||
+1
-2
@@ -3,14 +3,13 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirImport
|
import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedImportImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedImportImpl
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedPackageStarImport
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedPackageStarImport
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
+2
-3
@@ -3,7 +3,7 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
@@ -12,8 +12,7 @@ class FirTotalResolveTransformer {
|
|||||||
|
|
||||||
private val transformers: List<FirTransformer<Nothing?>> = listOf(
|
private val transformers: List<FirTransformer<Nothing?>> = listOf(
|
||||||
FirImportResolveTransformer(),
|
FirImportResolveTransformer(),
|
||||||
FirTypeResolveTransformer(),
|
FirTypeResolveTransformer()
|
||||||
FirClassifierResolveTransformer()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
fun processFile(firFile: FirFile) {
|
fun processFile(firFile: FirFile) {
|
||||||
+5
-2
@@ -3,8 +3,9 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors
|
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
@@ -161,7 +162,9 @@ open class FirTypeResolveTransformer : FirTransformer<Nothing?>() {
|
|||||||
firProvider.getFirClassifierByFqName(it)!!
|
firProvider.getFirClassifierByFqName(it)!!
|
||||||
}
|
}
|
||||||
|
|
||||||
val transformer = SuperTypeResolveTransformer(firElementsToVisit.iterator())
|
val transformer = SuperTypeResolveTransformer(
|
||||||
|
firElementsToVisit.iterator()
|
||||||
|
)
|
||||||
file.transformSingle(transformer, null)
|
file.transformSingle(transformer, null)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.descriptors.ConeDescriptor
|
|
||||||
|
|
||||||
interface FirBasedDescriptor<E> : ConeDescriptor where E : FirElement, E : FirDescriptorOwner<E> {
|
|
||||||
val fir: E
|
|
||||||
fun bind(e: E)
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir
|
|
||||||
|
|
||||||
interface FirDescriptorOwner<TElem> where TElem : FirElement, TElem : FirDescriptorOwner<TElem> {
|
|
||||||
val descriptor: FirBasedDescriptor<TElem>
|
|
||||||
}
|
|
||||||
@@ -182,20 +182,10 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry) {
|
|
||||||
print("(resolved) ")
|
|
||||||
visitEnumEntry(resolvedEnumEntry)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun visitEnumEntry(enumEntry: FirEnumEntry) {
|
override fun visitEnumEntry(enumEntry: FirEnumEntry) {
|
||||||
visitClass(enumEntry)
|
visitClass(enumEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitResolvedClass(resolvedClass: FirResolvedClass) {
|
|
||||||
print("(resolved) ")
|
|
||||||
visitClass(resolvedClass)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun visitClass(klass: FirClass) {
|
override fun visitClass(klass: FirClass) {
|
||||||
visitMemberDeclaration(klass)
|
visitMemberDeclaration(klass)
|
||||||
val attributes = listOfNotNull(
|
val attributes = listOfNotNull(
|
||||||
@@ -298,11 +288,6 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
println("}")
|
println("}")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias) {
|
|
||||||
print("(resolved) ")
|
|
||||||
visitTypeAlias(resolvedTypeAlias)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun visitTypeAlias(typeAlias: FirTypeAlias) {
|
override fun visitTypeAlias(typeAlias: FirTypeAlias) {
|
||||||
typeAlias.annotations.renderAnnotations()
|
typeAlias.annotations.renderAnnotations()
|
||||||
visitMemberDeclaration(typeAlias)
|
visitMemberDeclaration(typeAlias)
|
||||||
@@ -311,11 +296,6 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
println()
|
println()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitResolvedTypeParameter(resolvedTypeParameter: FirResolvedTypeParameter) {
|
|
||||||
print("(resolved) ")
|
|
||||||
visitTypeParameter(resolvedTypeParameter)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun visitTypeParameter(typeParameter: FirTypeParameter) {
|
override fun visitTypeParameter(typeParameter: FirTypeParameter) {
|
||||||
typeParameter.annotations.renderAnnotations()
|
typeParameter.annotations.renderAnnotations()
|
||||||
if (typeParameter.isReified) {
|
if (typeParameter.isReified) {
|
||||||
|
|||||||
@@ -6,10 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.fir.declarations
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.BaseTransformedType
|
import org.jetbrains.kotlin.fir.BaseTransformedType
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.fir.FirDescriptorOwner
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
|
|
||||||
interface FirResolvedClass : FirClass, FirDescriptorOwner<FirResolvedClass> {
|
|
||||||
override val modality: Modality
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
|
||||||
visitor.visitResolvedClass(this, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
interface FirResolvedEnumEntry : FirEnumEntry, FirDescriptorOwner<FirResolvedEnumEntry> {
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
|
||||||
visitor.visitResolvedEnumEntry(this, data)
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.fir.FirDescriptorOwner
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
|
|
||||||
interface FirResolvedTypeAlias : FirTypeAlias, FirDescriptorOwner<FirResolvedTypeAlias> {
|
|
||||||
override val modality: Modality
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
|
||||||
visitor.visitResolvedTypeAlias(this, data)
|
|
||||||
}
|
|
||||||
-15
@@ -1,15 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirDescriptorOwner
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
|
|
||||||
interface FirResolvedTypeParameter : FirTypeParameter, FirDescriptorOwner<FirResolvedTypeParameter> {
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
|
||||||
visitor.visitResolvedTypeParameter(this, data)
|
|
||||||
}
|
|
||||||
+1
-1
@@ -19,7 +19,7 @@ abstract class FirAbstractMemberDeclaration(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
name: Name,
|
name: Name,
|
||||||
final override val visibility: Visibility,
|
final override val visibility: Visibility,
|
||||||
final override val modality: Modality?,
|
override val modality: Modality?,
|
||||||
override val platformStatus: FirMemberPlatformStatus
|
override val platformStatus: FirMemberPlatformStatus
|
||||||
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirMemberDeclaration {
|
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirMemberDeclaration {
|
||||||
final override val typeParameters = mutableListOf<FirTypeParameter>()
|
final override val typeParameters = mutableListOf<FirTypeParameter>()
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirMemberPlatformStatus
|
import org.jetbrains.kotlin.fir.declarations.FirMemberPlatformStatus
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirType
|
||||||
@@ -38,6 +37,9 @@ open class FirClassImpl(
|
|||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val modality: Modality
|
||||||
|
get() = super.modality ?: if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL
|
||||||
|
|
||||||
override val superTypes = mutableListOf<FirType>()
|
override val superTypes = mutableListOf<FirType>()
|
||||||
|
|
||||||
override val declarations = mutableListOf<FirDeclaration>()
|
override val declarations = mutableListOf<FirDeclaration>()
|
||||||
|
|||||||
+2
-2
@@ -38,7 +38,7 @@ class FirDefaultPropertyGetter(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
propertyType: FirType
|
propertyType: FirType
|
||||||
): FirDefaultPropertyAccessor(session, psi, isGetter = true) {
|
) : FirDefaultPropertyAccessor(session, psi, isGetter = true) {
|
||||||
override val valueParameters: List<FirValueParameter> = emptyList()
|
override val valueParameters: List<FirValueParameter> = emptyList()
|
||||||
|
|
||||||
override var returnType: FirType = propertyType
|
override var returnType: FirType = propertyType
|
||||||
@@ -54,7 +54,7 @@ class FirDefaultPropertySetter(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
propertyType: FirType
|
propertyType: FirType
|
||||||
): FirDefaultPropertyAccessor(session, psi, isGetter = false) {
|
) : FirDefaultPropertyAccessor(session, psi, isGetter = false) {
|
||||||
override val valueParameters = mutableListOf(FirDefaultSetterValueParameter(session, psi, propertyType))
|
override val valueParameters = mutableListOf(FirDefaultSetterValueParameter(session, psi, propertyType))
|
||||||
|
|
||||||
override var returnType: FirType = FirUnitType(session, psi)
|
override var returnType: FirType = FirUnitType(session, psi)
|
||||||
|
|||||||
+4
-2
@@ -35,8 +35,10 @@ class FirMemberFunctionImpl(
|
|||||||
receiverType: FirType?,
|
receiverType: FirType?,
|
||||||
returnType: FirType,
|
returnType: FirType,
|
||||||
override val body: FirBody?
|
override val body: FirBody?
|
||||||
) : FirAbstractCallableMember(session, psi, name, visibility, modality, platformStatus, isOverride, receiverType, returnType),
|
) : FirAbstractCallableMember(
|
||||||
FirNamedFunction {
|
session, psi, name, visibility, modality,
|
||||||
|
platformStatus, isOverride, receiverType, returnType
|
||||||
|
), FirNamedFunction {
|
||||||
override val valueParameters = mutableListOf<FirValueParameter>()
|
override val valueParameters = mutableListOf<FirValueParameter>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
|
|||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations.impl
|
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirNamedDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
|
|
||||||
class FirAbstractNamedDeclaration(
|
|
||||||
override val session: FirSession,
|
|
||||||
override val psi: PsiElement?,
|
|
||||||
override val name: Name
|
|
||||||
) : FirNamedDeclaration, FirAnnotationContainer {
|
|
||||||
override val annotations = mutableListOf<FirAnnotationCall>()
|
|
||||||
}
|
|
||||||
-4
@@ -1,4 +0,0 @@
|
|||||||
package org.jetbrains.kotlin.fir.declarations.impl
|
|
||||||
|
|
||||||
class FirPackageFragmentImpl {
|
|
||||||
}
|
|
||||||
-34
@@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations.impl
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.fir.FirBasedDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedClass
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
|
||||||
|
|
||||||
class FirResolvedClassImpl(val delegate: FirClass, override val descriptor: FirBasedDescriptor<FirResolvedClass>) :
|
|
||||||
FirResolvedClass, FirClass by delegate {
|
|
||||||
|
|
||||||
init {
|
|
||||||
symbol.bind(this)
|
|
||||||
descriptor.bind(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override val modality: Modality
|
|
||||||
get() = delegate.modality ?: if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL
|
|
||||||
|
|
||||||
override fun accept(visitor: FirVisitorVoid) {
|
|
||||||
super<FirResolvedClass>.accept(visitor)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
|
||||||
return super<FirResolvedClass>.accept(visitor, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations.impl
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirBasedDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedEnumEntry
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
|
||||||
|
|
||||||
class FirResolvedEnumEntryImpl(
|
|
||||||
val delegate: FirEnumEntry,
|
|
||||||
override val descriptor: FirBasedDescriptor<FirResolvedEnumEntry>
|
|
||||||
) : FirResolvedEnumEntry, FirEnumEntry by delegate {
|
|
||||||
|
|
||||||
init {
|
|
||||||
symbol.bind(this)
|
|
||||||
descriptor.bind(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun accept(visitor: FirVisitorVoid) {
|
|
||||||
super<FirResolvedEnumEntry>.accept(visitor)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
|
||||||
return super<FirResolvedEnumEntry>.accept(visitor, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-33
@@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations.impl
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.fir.FirBasedDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedTypeAlias
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
|
||||||
|
|
||||||
class FirResolvedTypeAliasImpl(val delegate: FirTypeAlias, override val descriptor: FirBasedDescriptor<FirResolvedTypeAlias>) :
|
|
||||||
FirResolvedTypeAlias, FirTypeAlias by delegate {
|
|
||||||
|
|
||||||
override val modality: Modality
|
|
||||||
get() = delegate.modality ?: Modality.FINAL
|
|
||||||
|
|
||||||
init {
|
|
||||||
symbol.bind(this)
|
|
||||||
descriptor.bind(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun accept(visitor: FirVisitorVoid) {
|
|
||||||
return super<FirResolvedTypeAlias>.accept(visitor)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
|
||||||
return super<FirResolvedTypeAlias>.accept(visitor, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-29
@@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
|
||||||
* that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations.impl
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirBasedDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedTypeParameter
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
|
||||||
|
|
||||||
class FirResolvedTypeParameterImpl(val delegate: FirTypeParameter, override val descriptor: FirBasedDescriptor<FirResolvedTypeParameter>) :
|
|
||||||
FirResolvedTypeParameter, FirTypeParameter by delegate {
|
|
||||||
|
|
||||||
init {
|
|
||||||
symbol.bind(this)
|
|
||||||
descriptor.bind(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun accept(visitor: FirVisitorVoid) {
|
|
||||||
return super<FirResolvedTypeParameter>.accept(visitor)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
|
||||||
return super<FirResolvedTypeParameter>.accept(visitor, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -33,6 +33,9 @@ class FirTypeAliasImpl(
|
|||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val modality: Modality
|
||||||
|
get() = super.modality ?: Modality.FINAL
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
typeParameters.transformInplace(transformer, data)
|
typeParameters.transformInplace(transformer, data)
|
||||||
expandedType = expandedType.transformSingle(transformer, data)
|
expandedType = expandedType.transformSingle(transformer, data)
|
||||||
|
|||||||
-1
@@ -9,7 +9,6 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirType
|
||||||
|
|
||||||
class FirAnnotationCallImpl(
|
class FirAnnotationCallImpl(
|
||||||
|
|||||||
@@ -11,9 +11,7 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
|||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeTypeParameterType
|
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeUnsafe
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
|
||||||
class FirClassSymbol(override val classId: ClassId) : ConeClassSymbol, AbstractFirBasedSymbol<FirClass>() {
|
class FirClassSymbol(override val classId: ClassId) : ConeClassSymbol, AbstractFirBasedSymbol<FirClass>() {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.types.FirQualifierPart
|
|||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
import org.jetbrains.kotlin.fir.types.FirUserType
|
import org.jetbrains.kotlin.fir.types.FirUserType
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.types.TypeProjectionBase
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class FirUserTypeImpl(
|
class FirUserTypeImpl(
|
||||||
|
|||||||
+10
-42
@@ -66,30 +66,14 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformClass(enumEntry, data)
|
return transformClass(enumEntry, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: D): CompositeTransformResult<FirDeclaration> {
|
|
||||||
return transformEnumEntry(resolvedEnumEntry, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformResolvedClass(resolvedClass: FirResolvedClass, data: D): CompositeTransformResult<FirDeclaration> {
|
|
||||||
return transformClass(resolvedClass, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirDeclaration> {
|
open fun transformTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirDeclaration> {
|
||||||
return transformMemberDeclaration(typeAlias, data)
|
return transformMemberDeclaration(typeAlias, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: D): CompositeTransformResult<FirDeclaration> {
|
|
||||||
return transformTypeAlias(resolvedTypeAlias, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirDeclaration> {
|
open fun transformTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirDeclaration> {
|
||||||
return transformNamedDeclaration(typeParameter, data)
|
return transformNamedDeclaration(typeParameter, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformResolvedTypeParameter(resolvedTypeParameter: FirResolvedTypeParameter, data: D): CompositeTransformResult<FirDeclaration> {
|
|
||||||
return transformTypeParameter(resolvedTypeParameter, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformProperty(property: FirProperty, data: D): CompositeTransformResult<FirDeclaration> {
|
open fun transformProperty(property: FirProperty, data: D): CompositeTransformResult<FirDeclaration> {
|
||||||
return transformDeclaration(property, data)
|
return transformDeclaration(property, data)
|
||||||
}
|
}
|
||||||
@@ -218,10 +202,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(element, data)
|
return transformElement(element, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
|
||||||
return transformEnumEntry(enumEntry, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitExpression(expression: FirExpression, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitExpression(expression: FirExpression, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformExpression(expression, data)
|
return transformExpression(expression, data)
|
||||||
}
|
}
|
||||||
@@ -254,14 +234,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformType(type, data)
|
return transformType(type, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
|
||||||
return transformTypeAlias(typeAlias, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirElement> {
|
|
||||||
return transformTypeParameter(typeParameter, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformTypeProjection(typeProjection, data)
|
return transformTypeProjection(typeProjection, data)
|
||||||
}
|
}
|
||||||
@@ -278,8 +250,8 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformDelegatedConstructorCall(delegatedConstructorCall, data)
|
return transformDelegatedConstructorCall(delegatedConstructorCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedClass(resolvedClass: FirResolvedClass, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformResolvedClass(resolvedClass, data)
|
return transformEnumEntry(enumEntry, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitCallableMember(callableMember: FirCallableMember, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitCallableMember(callableMember: FirCallableMember, data: D): CompositeTransformResult<FirElement> {
|
||||||
@@ -310,10 +282,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformAnonymousInitializer(anonymousInitializer, data)
|
return transformAnonymousInitializer(anonymousInitializer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
|
||||||
return transformResolvedEnumEntry(resolvedEnumEntry, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitBody(body: FirBody, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitBody(body: FirBody, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformBody(body, data)
|
return transformBody(body, data)
|
||||||
}
|
}
|
||||||
@@ -338,6 +306,14 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformResolvedImport(resolvedImport, data)
|
return transformResolvedImport(resolvedImport, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformTypeAlias(typeAlias, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformTypeParameter(typeParameter, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitFile(file: FirFile, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitFile(file: FirFile, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformFile(file, data)
|
return transformFile(file, data)
|
||||||
}
|
}
|
||||||
@@ -354,14 +330,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformImplicitType(implicitType, data)
|
return transformImplicitType(implicitType, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
|
||||||
return transformResolvedTypeAlias(resolvedTypeAlias, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitResolvedTypeParameter(resolvedTypeParameter: FirResolvedTypeParameter, data: D): CompositeTransformResult<FirElement> {
|
|
||||||
return transformResolvedTypeParameter(resolvedTypeParameter, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitStarProjection(starProjection: FirStarProjection, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitStarProjection(starProjection: FirStarProjection, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformStarProjection(starProjection, data)
|
return transformStarProjection(starProjection, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,30 +66,14 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
return visitClass(enumEntry, data)
|
return visitClass(enumEntry, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: D): R {
|
|
||||||
return visitEnumEntry(resolvedEnumEntry, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitResolvedClass(resolvedClass: FirResolvedClass, data: D): R {
|
|
||||||
return visitClass(resolvedClass, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): R {
|
open fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): R {
|
||||||
return visitMemberDeclaration(typeAlias, data)
|
return visitMemberDeclaration(typeAlias, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: D): R {
|
|
||||||
return visitTypeAlias(resolvedTypeAlias, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): R {
|
open fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): R {
|
||||||
return visitNamedDeclaration(typeParameter, data)
|
return visitNamedDeclaration(typeParameter, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedTypeParameter(resolvedTypeParameter: FirResolvedTypeParameter, data: D): R {
|
|
||||||
return visitTypeParameter(resolvedTypeParameter, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitProperty(property: FirProperty, data: D): R {
|
open fun visitProperty(property: FirProperty, data: D): R {
|
||||||
return visitDeclaration(property, data)
|
return visitDeclaration(property, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-42
@@ -66,30 +66,14 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitClass(enumEntry, null)
|
visitClass(enumEntry, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry) {
|
|
||||||
visitEnumEntry(resolvedEnumEntry, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitResolvedClass(resolvedClass: FirResolvedClass) {
|
|
||||||
visitClass(resolvedClass, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeAlias(typeAlias: FirTypeAlias) {
|
open fun visitTypeAlias(typeAlias: FirTypeAlias) {
|
||||||
visitMemberDeclaration(typeAlias, null)
|
visitMemberDeclaration(typeAlias, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias) {
|
|
||||||
visitTypeAlias(resolvedTypeAlias, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeParameter(typeParameter: FirTypeParameter) {
|
open fun visitTypeParameter(typeParameter: FirTypeParameter) {
|
||||||
visitNamedDeclaration(typeParameter, null)
|
visitNamedDeclaration(typeParameter, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitResolvedTypeParameter(resolvedTypeParameter: FirResolvedTypeParameter) {
|
|
||||||
visitTypeParameter(resolvedTypeParameter, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitProperty(property: FirProperty) {
|
open fun visitProperty(property: FirProperty) {
|
||||||
visitDeclaration(property, null)
|
visitDeclaration(property, null)
|
||||||
}
|
}
|
||||||
@@ -218,10 +202,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(element)
|
visitElement(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
|
|
||||||
visitEnumEntry(enumEntry)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitExpression(expression: FirExpression, data: Nothing?) {
|
final override fun visitExpression(expression: FirExpression, data: Nothing?) {
|
||||||
visitExpression(expression)
|
visitExpression(expression)
|
||||||
}
|
}
|
||||||
@@ -254,14 +234,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitType(type)
|
visitType(type)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
|
|
||||||
visitTypeAlias(typeAlias)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
|
|
||||||
visitTypeParameter(typeParameter)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: Nothing?) {
|
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: Nothing?) {
|
||||||
visitTypeProjection(typeProjection)
|
visitTypeProjection(typeProjection)
|
||||||
}
|
}
|
||||||
@@ -278,8 +250,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitDelegatedConstructorCall(delegatedConstructorCall)
|
visitDelegatedConstructorCall(delegatedConstructorCall)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedClass(resolvedClass: FirResolvedClass, data: Nothing?) {
|
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
|
||||||
visitResolvedClass(resolvedClass)
|
visitEnumEntry(enumEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitCallableMember(callableMember: FirCallableMember, data: Nothing?) {
|
final override fun visitCallableMember(callableMember: FirCallableMember, data: Nothing?) {
|
||||||
@@ -310,10 +282,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitAnonymousInitializer(anonymousInitializer)
|
visitAnonymousInitializer(anonymousInitializer)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: Nothing?) {
|
|
||||||
visitResolvedEnumEntry(resolvedEnumEntry)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitBody(body: FirBody, data: Nothing?) {
|
final override fun visitBody(body: FirBody, data: Nothing?) {
|
||||||
visitBody(body)
|
visitBody(body)
|
||||||
}
|
}
|
||||||
@@ -338,6 +306,14 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitResolvedImport(resolvedImport)
|
visitResolvedImport(resolvedImport)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
|
||||||
|
visitTypeAlias(typeAlias)
|
||||||
|
}
|
||||||
|
|
||||||
|
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
|
||||||
|
visitTypeParameter(typeParameter)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitFile(file: FirFile, data: Nothing?) {
|
final override fun visitFile(file: FirFile, data: Nothing?) {
|
||||||
visitFile(file)
|
visitFile(file)
|
||||||
}
|
}
|
||||||
@@ -354,14 +330,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitImplicitType(implicitType)
|
visitImplicitType(implicitType)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: Nothing?) {
|
|
||||||
visitResolvedTypeAlias(resolvedTypeAlias)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitResolvedTypeParameter(resolvedTypeParameter: FirResolvedTypeParameter, data: Nothing?) {
|
|
||||||
visitResolvedTypeParameter(resolvedTypeParameter)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitStarProjection(starProjection: FirStarProjection, data: Nothing?) {
|
final override fun visitStarProjection(starProjection: FirStarProjection, data: Nothing?) {
|
||||||
visitStarProjection(starProjection)
|
visitStarProjection(starProjection)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
FILE: F.kt
|
FILE: F.kt
|
||||||
public? open class A() {
|
public? open class A() {
|
||||||
}
|
}
|
||||||
public? final? class B() : A {
|
public? final class B() : A {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ FILE: NestedOfAliasedType.kt
|
|||||||
|
|
||||||
}
|
}
|
||||||
public? final typealias TA = A
|
public? final typealias TA = A
|
||||||
public? final? class B() : TA {
|
public? final class B() : TA {
|
||||||
public? final? class NestedInB() : Nested {
|
public? final class NestedInB() : Nested {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ FILE: NestedSuperType.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public? final? class Your() : My {
|
public? final class Your() : My {
|
||||||
public? final? class NestedThree() : NestedOne {
|
public? final class NestedThree() : NestedOne {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
FILE: complexTypes.kt
|
FILE: complexTypes.kt
|
||||||
<T, out S> public? final? class C() {
|
<T, out S> public? final class C() {
|
||||||
<R, in P> public? final? class D(inner) {
|
<R, in P> public? final class D(inner) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public? final? interface Test() {
|
public? abstract interface Test() {
|
||||||
public? 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<*>, *>
|
||||||
public? get(): a.b.C<out CharSequence, *>.D<in List<*>, *>
|
public? get(): a.b.C<out CharSequence, *>.D<in List<*>, *>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ FILE: derivedClass.kt
|
|||||||
public? constructor(x: T)
|
public? constructor(x: T)
|
||||||
|
|
||||||
}
|
}
|
||||||
<T : Any> public? final? class Derived() : Base<T> {
|
<T : Any> public? final class Derived() : Base<T> {
|
||||||
public? constructor(x: T)STUB
|
public? constructor(x: T)STUB
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
FILE: enums.kt
|
FILE: enums.kt
|
||||||
public? final? enum class Order() {
|
public? final enum class Order() {
|
||||||
public? final enum entry FIRST() {
|
public? final enum entry FIRST() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ FILE: enums.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public? final? enum class Planet() {
|
public? final enum class Planet() {
|
||||||
public? constructor(m: Double, r: Double)
|
public? constructor(m: Double, r: Double)
|
||||||
|
|
||||||
public? final enum entry MERCURY() : Planet {
|
public? final enum entry MERCURY() : Planet {
|
||||||
@@ -36,7 +36,7 @@ FILE: enums.kt
|
|||||||
|
|
||||||
public? abstract function sayHello(): <implicit>
|
public? abstract function sayHello(): <implicit>
|
||||||
|
|
||||||
public? final? object Companion(companion) {
|
public? final object Companion(companion) {
|
||||||
public? final? const property G(val): <implicit> = STUB
|
public? final? const property G(val): <implicit> = STUB
|
||||||
public? get(): <implicit>
|
public? get(): <implicit>
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
FILE: enums2.kt
|
FILE: enums2.kt
|
||||||
public? final? 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? constructor(x: Some)
|
||||||
|
|
||||||
public? final enum entry FIRST() : SomeEnum {
|
public? final enum entry FIRST() : SomeEnum {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
FILE: expectActual.kt
|
FILE: expectActual.kt
|
||||||
public? final? expect class MyClass() {
|
public? final expect class MyClass() {
|
||||||
}
|
}
|
||||||
public? final? expect function foo(): String
|
public? final? expect function foo(): String
|
||||||
public? final? expect property x(val): Int
|
public? final? expect property x(val): Int
|
||||||
public? get(): Int
|
public? get(): Int
|
||||||
public? final? actual class MyClass() {
|
public? final actual class MyClass() {
|
||||||
}
|
}
|
||||||
public? final? actual function foo(): <implicit> {
|
public? final? actual function foo(): <implicit> {
|
||||||
STUB
|
STUB
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
FILE: genericFunctions.kt
|
FILE: genericFunctions.kt
|
||||||
public? final? interface Any() {
|
public? abstract interface Any() {
|
||||||
}
|
}
|
||||||
<reified T : Any> public? final? inline function safeAsAny.(): T? {
|
<reified T : Any> public? final? inline function safeAsAny.(): T? {
|
||||||
STUB
|
STUB
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ FILE: nestedClass.kt
|
|||||||
public? constructor(s: String)
|
public? constructor(s: String)
|
||||||
|
|
||||||
}
|
}
|
||||||
public? final? class Outer() {
|
public? final class Outer() {
|
||||||
public? final? class Derived() : Base {
|
public? final class Derived() : Base {
|
||||||
public? constructor(s: String)STUB
|
public? constructor(s: String)STUB
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public? final? object Obj() : Base {
|
public? final object Obj() : Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
FILE: simpleClass.kt
|
FILE: simpleClass.kt
|
||||||
public? final? interface SomeInterface() {
|
public? abstract interface SomeInterface() {
|
||||||
public? final? function foo(x: Int, y: String): String
|
public? final? function foo(x: Int, y: String): String
|
||||||
|
|
||||||
public? final? property bar(val): Boolean
|
public? final? property bar(val): Boolean
|
||||||
public? get(): Boolean
|
public? get(): Boolean
|
||||||
|
|
||||||
}
|
}
|
||||||
public? final? class SomeClass() : SomeInterface {
|
public? final class SomeClass() : SomeInterface {
|
||||||
private final? property baz(val): <implicit> = STUB
|
private final? property baz(val): <implicit> = STUB
|
||||||
public? get(): <implicit>
|
public? get(): <implicit>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
FILE: simpleTypeAlias.kt
|
FILE: simpleTypeAlias.kt
|
||||||
public? final? interface B() {
|
public? abstract interface B() {
|
||||||
}
|
}
|
||||||
public? final typealias C = B
|
public? final typealias C = B
|
||||||
public? final? class D() : C {
|
public? final class D() : C {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
FILE: typeAliasWithGeneric.kt
|
FILE: typeAliasWithGeneric.kt
|
||||||
public? open class A() {
|
public? open class A() {
|
||||||
}
|
}
|
||||||
<S, T : A> public? final? interface B() {
|
<S, T : A> public? abstract interface B() {
|
||||||
}
|
}
|
||||||
<T> public? final typealias C = B<T, A>
|
<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
|
FILE: typeParameterVsNested.kt
|
||||||
public? final? interface Some() {
|
public? abstract interface Some() {
|
||||||
}
|
}
|
||||||
<T : Some> public? abstract class My() {
|
<T : Some> public? abstract class My() {
|
||||||
public? final? class T(inner) {
|
public? final class T(inner) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public? abstract property x(val): T
|
public? abstract property x(val): T
|
||||||
@@ -16,7 +16,7 @@ FILE: typeParameterVsNested.kt
|
|||||||
public? abstract property z(val): test.My.T
|
public? abstract property z(val): test.My.T
|
||||||
public? get(): 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
|
FILE: typeParameters.kt
|
||||||
<out T : Any> public? final? interface List() {
|
<out T : Any> public? abstract interface List() {
|
||||||
public? final? operator function get(index: Int): T
|
public? final? operator function get(index: Int): T
|
||||||
|
|
||||||
public? final? infix function concat(other: List<T>): List<T>
|
public? final? infix function concat(other: List<T>): List<T>
|
||||||
@@ -9,7 +9,7 @@ FILE: typeParameters.kt
|
|||||||
public? final typealias AnyList = List<*>
|
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 {
|
public? open? override function get(index: Int): Int {
|
||||||
STUB
|
STUB
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
FILE: F.kt
|
FILE: F.kt
|
||||||
(resolved) public? open class A() {
|
public? open class A() {
|
||||||
}
|
}
|
||||||
(resolved) public? final class B() : R/A/ {
|
public? final class B() : R/A/ {
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -1,12 +1,12 @@
|
|||||||
FILE: NestedOfAliasedType.kt
|
FILE: NestedOfAliasedType.kt
|
||||||
(resolved) public? abstract class A() {
|
public? abstract class A() {
|
||||||
(resolved) public? abstract class Nested() {
|
public? abstract class Nested() {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
(resolved) public? final typealias TA = R/A/
|
public? final typealias TA = R/A/
|
||||||
(resolved) public? final class B() : R/TA = A/ {
|
public? final class B() : R/TA = A/ {
|
||||||
(resolved) public? final class NestedInB() : R/A.Nested/ {
|
public? final class NestedInB() : R/A.Nested/ {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -1,14 +1,14 @@
|
|||||||
FILE: NestedSuperType.kt
|
FILE: NestedSuperType.kt
|
||||||
(resolved) public? abstract class My() {
|
public? abstract class My() {
|
||||||
(resolved) public? abstract class NestedOne() : R/p/My/ {
|
public? abstract class NestedOne() : R/p/My/ {
|
||||||
(resolved) public? abstract class NestedTwo() : R/p/My.NestedOne/ {
|
public? abstract class NestedTwo() : R/p/My.NestedOne/ {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
(resolved) public? final class Your() : R/p/My/ {
|
public? final class Your() : R/p/My/ {
|
||||||
(resolved) public? 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) public? open class A() {
|
public? open class A() {
|
||||||
}
|
}
|
||||||
(resolved) public? final class B() : R/p/A/ {
|
public? final class B() : R/p/A/ {
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
FILE: lists.kt
|
FILE: lists.kt
|
||||||
(resolved) public? abstract class MyStringList() : R/kotlin/collections/List<kotlin/String>/ {
|
public? abstract class MyStringList() : R/kotlin/collections/List<kotlin/String>/ {
|
||||||
}
|
}
|
||||||
(resolved) public? abstract class MyMutableStringList() : R/kotlin/collections/MutableList<kotlin/String>/ {
|
public? abstract class MyMutableStringList() : R/kotlin/collections/MutableList<kotlin/String>/ {
|
||||||
}
|
}
|
||||||
public? final? function convertR/kotlin/collections/List<kotlin/String>/.(): R/MyStringList/ {
|
public? final? function convertR/kotlin/collections/List<kotlin/String>/.(): R/MyStringList/ {
|
||||||
STUB
|
STUB
|
||||||
|
|||||||
+6
-6
@@ -1,21 +1,21 @@
|
|||||||
FILE: enum.kt
|
FILE: enum.kt
|
||||||
(resolved) public? abstract interface Some() {
|
public? abstract interface Some() {
|
||||||
}
|
}
|
||||||
(resolved) public? final object O1() : R/Some/ {
|
public? final object O1() : R/Some/ {
|
||||||
}
|
}
|
||||||
(resolved) public? final object O2() : R/Some/ {
|
public? final object O2() : R/Some/ {
|
||||||
}
|
}
|
||||||
(resolved) public? final enum class SomeEnum() {
|
public? final enum class SomeEnum() {
|
||||||
public? constructor(x: R/Some/)
|
public? constructor(x: R/Some/)
|
||||||
|
|
||||||
(resolved) public? final enum entry FIRST() : R/SomeEnum/ {
|
public? final enum entry FIRST() : R/SomeEnum/ {
|
||||||
public? open? override function check(y: R/Some/): R/error: Symbol not found/ {
|
public? open? override function check(y: R/Some/): R/error: Symbol not found/ {
|
||||||
STUB
|
STUB
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(resolved) public? final enum entry SECOND() : R/SomeEnum/ {
|
public? final enum entry SECOND() : R/SomeEnum/ {
|
||||||
public? open? override function check(y: R/Some/): R/error: Symbol not found/ {
|
public? open? override function check(y: R/Some/): R/error: Symbol not found/ {
|
||||||
STUB
|
STUB
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,10 +1,10 @@
|
|||||||
FILE: genericFunctions.kt
|
FILE: genericFunctions.kt
|
||||||
(resolved) public? abstract interface Any() {
|
public? abstract interface Any() {
|
||||||
}
|
}
|
||||||
<reified T : Any> public? final? inline function safeAsR/Any/.(): R/T/ {
|
<reified T : Any> public? final? inline function safeAsR/Any/.(): R/T/ {
|
||||||
STUB
|
STUB
|
||||||
}
|
}
|
||||||
(resolved) public? abstract class Summator() {
|
public? abstract class Summator() {
|
||||||
<T> public? abstract function plus(first: R/T/, second: R/T/): R/T/
|
<T> public? abstract function plus(first: R/T/, second: R/T/): R/T/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
FILE: NestedSuperType.kt
|
FILE: NestedSuperType.kt
|
||||||
(resolved) public? final class A() : R/b/B/ {
|
public? final class A() : R/b/B/ {
|
||||||
(resolved) public? final class NestedInA1() : R/b/B.NestedInB/ {
|
public? final class NestedInA1() : R/b/B.NestedInB/ {
|
||||||
}
|
}
|
||||||
|
|
||||||
(resolved) public? final class NestedInA2() : R/c/C.NestedInC/ {
|
public? final class NestedInA2() : R/c/C.NestedInC/ {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
FILE: TypeAliasExpansion.kt
|
FILE: TypeAliasExpansion.kt
|
||||||
(resolved) 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
|
FILE: sealedStarImport.kt
|
||||||
(resolved) public? abstract class Factory() {
|
public? abstract class Factory() {
|
||||||
public? abstract function createTest(): R/error: Symbol not found/
|
public? abstract function createTest(): R/error: Symbol not found/
|
||||||
|
|
||||||
public? abstract function createObj(): R/test/Test.O/
|
public? abstract function createObj(): R/test/Test.O/
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
FILE: simpleAliasedImport.kt
|
FILE: simpleAliasedImport.kt
|
||||||
(resolved) public? final class YourClass() : R/b/MyClass/ {
|
public? final class YourClass() : R/b/MyClass/ {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
FILE: simpleImport.kt
|
FILE: simpleImport.kt
|
||||||
(resolved) public? final class YourClass() : R/b/MyClass/ {
|
public? final class YourClass() : R/b/MyClass/ {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
FILE: simpleImportNested.kt
|
FILE: simpleImportNested.kt
|
||||||
(resolved) public? final class YourClass() : R/a/MyClass.MyNested/ {
|
public? final class YourClass() : R/a/MyClass.MyNested/ {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
FILE: simpleImportOuter.kt
|
FILE: simpleImportOuter.kt
|
||||||
(resolved) 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
|
FILE: simpleClass.kt
|
||||||
(resolved) 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? function foo(x: R/kotlin/Int/, y: R/kotlin/String/): R/kotlin/String/
|
||||||
|
|
||||||
public? final? property bar(val): R/kotlin/Boolean/
|
public? final? property bar(val): R/kotlin/Boolean/
|
||||||
public? get(): R/kotlin/Boolean/
|
public? get(): R/kotlin/Boolean/
|
||||||
|
|
||||||
}
|
}
|
||||||
(resolved) public? final class SomeClass() : R/SomeInterface/ {
|
public? final class SomeClass() : R/SomeInterface/ {
|
||||||
private final? property baz(val): R/error: Not supported: FirImplicitTypeImpl/ = STUB
|
private final? property baz(val): R/error: Not supported: FirImplicitTypeImpl/ = STUB
|
||||||
public? get(): R/error: Not supported: FirImplicitTypeImpl/
|
public? get(): R/error: Not supported: FirImplicitTypeImpl/
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
FILE: simpleTypeAlias.kt
|
FILE: simpleTypeAlias.kt
|
||||||
(resolved) public? abstract interface B() {
|
public? abstract interface B() {
|
||||||
}
|
}
|
||||||
(resolved) public? final typealias C = R/B/
|
public? final typealias C = R/B/
|
||||||
(resolved) public? final class D() : R/C = B/ {
|
public? final class D() : R/C = B/ {
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
FILE: typeAliasWithGeneric.kt
|
FILE: typeAliasWithGeneric.kt
|
||||||
(resolved) public? open class A() {
|
public? open class A() {
|
||||||
}
|
}
|
||||||
(resolved) <(resolved) S, (resolved) T : R/A/> public? abstract interface B() {
|
<S, T : R/A/> public? abstract interface B() {
|
||||||
}
|
}
|
||||||
(resolved) public? final class D() : R/C<A> = B<T, A>/ {
|
public? final class D() : R/C<A> = B<T, A>/ {
|
||||||
}
|
}
|
||||||
(resolved) <(resolved) T> public? final typealias C = R/B<T, A>/
|
<T> public? final typealias C = R/B<T, A>/
|
||||||
|
|||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
FILE: typeParameterVsNested.kt
|
FILE: typeParameterVsNested.kt
|
||||||
(resolved) public? abstract interface Some() {
|
public? abstract interface Some() {
|
||||||
}
|
}
|
||||||
(resolved) <(resolved) T : R/test/Some/> public? abstract class My() {
|
<T : R/test/Some/> public? abstract class My() {
|
||||||
(resolved) public? final class T(inner) {
|
public? final class T(inner) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public? abstract property x(val): R/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? abstract property z(val): R/test/My.T/
|
||||||
public? get(): R/test/My.T/
|
public? get(): R/test/My.T/
|
||||||
|
|
||||||
(resolved) public? final class Some() : R/test/My.T/ {
|
public? final class Some() : R/test/My.T/ {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,18 +6,14 @@
|
|||||||
package org.jetbrains.kotlin.fir
|
package org.jetbrains.kotlin.fir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.descriptors.FirTotalResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||||
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirQualifierResolver
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.impl.*
|
import org.jetbrains.kotlin.fir.resolve.impl.*
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
abstract class AbstractFirResolveTestCase : AbstractFirResolveWithSessionTestCase() {
|
abstract class AbstractFirResolveTestCase : AbstractFirResolveWithSessionTestCase() {
|
||||||
|
|||||||
Reference in New Issue
Block a user