[FIR2IR] Create special IrDeclarationOrigin for generated declarations
This commit is contained in:
committed by
TeamCityServer
parent
233b9f1242
commit
b3768a201f
@@ -492,7 +492,10 @@ internal fun IrDeclarationParent.declareThisReceiverParameter(
|
|||||||
fun FirClass.irOrigin(firProvider: FirProvider): IrDeclarationOrigin = when {
|
fun FirClass.irOrigin(firProvider: FirProvider): IrDeclarationOrigin = when {
|
||||||
firProvider.getFirClassifierContainerFileIfAny(symbol) != null -> IrDeclarationOrigin.DEFINED
|
firProvider.getFirClassifierContainerFileIfAny(symbol) != null -> IrDeclarationOrigin.DEFINED
|
||||||
isJava -> IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
isJava -> IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
||||||
else -> IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
else -> when (val origin = origin) {
|
||||||
|
is FirDeclarationOrigin.Plugin -> IrPluginDeclarationOrigin(origin.key)
|
||||||
|
else -> IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val IrType.isSamType: Boolean
|
val IrType.isSamType: Boolean
|
||||||
@@ -598,3 +601,9 @@ fun FirSession.createFilesWithGeneratedDeclarations(): List<FirFile> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun FirDeclaration?.computeIrOrigin(predefinedOrigin: IrDeclarationOrigin? = null): IrDeclarationOrigin {
|
||||||
|
return predefinedOrigin
|
||||||
|
?: (this?.origin as? FirDeclarationOrigin.Plugin)?.let { IrPluginDeclarationOrigin(it.key) }
|
||||||
|
?: IrDeclarationOrigin.DEFINED
|
||||||
|
}
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ class Fir2IrClassifierStorage(
|
|||||||
fun registerIrClass(
|
fun registerIrClass(
|
||||||
regularClass: FirRegularClass,
|
regularClass: FirRegularClass,
|
||||||
parent: IrDeclarationParent? = null,
|
parent: IrDeclarationParent? = null,
|
||||||
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED
|
predefinedOrigin: IrDeclarationOrigin? = null
|
||||||
): IrClass {
|
): IrClass {
|
||||||
val visibility = regularClass.visibility
|
val visibility = regularClass.visibility
|
||||||
val modality = if (regularClass.classKind == ClassKind.ENUM_CLASS) {
|
val modality = if (regularClass.classKind == ClassKind.ENUM_CLASS) {
|
||||||
@@ -245,7 +245,7 @@ class Fir2IrClassifierStorage(
|
|||||||
irFactory.createClass(
|
irFactory.createClass(
|
||||||
startOffset,
|
startOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
origin,
|
regularClass.computeIrOrigin(predefinedOrigin),
|
||||||
symbol,
|
symbol,
|
||||||
regularClass.name,
|
regularClass.name,
|
||||||
regularClass.classKind,
|
regularClass.classKind,
|
||||||
@@ -314,7 +314,7 @@ class Fir2IrClassifierStorage(
|
|||||||
typeContext: ConversionTypeContext = ConversionTypeContext.DEFAULT
|
typeContext: ConversionTypeContext = ConversionTypeContext.DEFAULT
|
||||||
): IrTypeParameter {
|
): IrTypeParameter {
|
||||||
require(index >= 0)
|
require(index >= 0)
|
||||||
val origin = IrDeclarationOrigin.DEFINED
|
val origin = typeParameter.computeIrOrigin()
|
||||||
val irTypeParameter = with(typeParameter) {
|
val irTypeParameter = with(typeParameter) {
|
||||||
convertWithOffsets { startOffset, endOffset ->
|
convertWithOffsets { startOffset, endOffset ->
|
||||||
irFactory.createTypeParameter(
|
irFactory.createTypeParameter(
|
||||||
@@ -389,11 +389,12 @@ class Fir2IrClassifierStorage(
|
|||||||
fun createIrEnumEntry(
|
fun createIrEnumEntry(
|
||||||
enumEntry: FirEnumEntry,
|
enumEntry: FirEnumEntry,
|
||||||
irParent: IrClass?,
|
irParent: IrClass?,
|
||||||
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED
|
predefinedOrigin: IrDeclarationOrigin? = null
|
||||||
): IrEnumEntry {
|
): IrEnumEntry {
|
||||||
return enumEntry.convertWithOffsets { startOffset, endOffset ->
|
return enumEntry.convertWithOffsets { startOffset, endOffset ->
|
||||||
val signature = signatureComposer.composeSignature(enumEntry)
|
val signature = signatureComposer.composeSignature(enumEntry)
|
||||||
val result = declareIrEnumEntry(signature) { symbol ->
|
val result = declareIrEnumEntry(signature) { symbol ->
|
||||||
|
val origin = enumEntry.computeIrOrigin(predefinedOrigin)
|
||||||
irFactory.createEnumEntry(
|
irFactory.createEnumEntry(
|
||||||
startOffset, endOffset, origin, symbol, enumEntry.name
|
startOffset, endOffset, origin, symbol, enumEntry.name
|
||||||
).apply {
|
).apply {
|
||||||
|
|||||||
+16
-13
@@ -437,7 +437,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
function: FirFunction,
|
function: FirFunction,
|
||||||
irParent: IrDeclarationParent?,
|
irParent: IrDeclarationParent?,
|
||||||
thisReceiverOwner: IrClass? = irParent as? IrClass,
|
thisReceiverOwner: IrClass? = irParent as? IrClass,
|
||||||
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED,
|
predefinedOrigin: IrDeclarationOrigin? = null,
|
||||||
isLocal: Boolean = false,
|
isLocal: Boolean = false,
|
||||||
containingClass: ConeClassLikeLookupTag? = null,
|
containingClass: ConeClassLikeLookupTag? = null,
|
||||||
): IrSimpleFunction = convertCatching(function) {
|
): IrSimpleFunction = convertCatching(function) {
|
||||||
@@ -453,7 +453,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
// See org.jetbrains.kotlin.backend.jvm.lower.InheritedDefaultMethodsOnClassesLoweringKt.isDefinitelyNotDefaultImplsMethod
|
// See org.jetbrains.kotlin.backend.jvm.lower.InheritedDefaultMethodsOnClassesLoweringKt.isDefinitelyNotDefaultImplsMethod
|
||||||
(irParent as? IrClass)?.origin == IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB &&
|
(irParent as? IrClass)?.origin == IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB &&
|
||||||
function.origin == FirDeclarationOrigin.Enhancement -> IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
function.origin == FirDeclarationOrigin.Enhancement -> IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
||||||
else -> origin
|
else -> function.computeIrOrigin(predefinedOrigin)
|
||||||
}
|
}
|
||||||
classifierStorage.preCacheTypeParameters(function)
|
classifierStorage.preCacheTypeParameters(function)
|
||||||
val name = simpleFunction?.name
|
val name = simpleFunction?.name
|
||||||
@@ -544,9 +544,10 @@ class Fir2IrDeclarationStorage(
|
|||||||
fun createIrConstructor(
|
fun createIrConstructor(
|
||||||
constructor: FirConstructor,
|
constructor: FirConstructor,
|
||||||
irParent: IrClass,
|
irParent: IrClass,
|
||||||
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED,
|
predefinedOrigin: IrDeclarationOrigin? = null,
|
||||||
isLocal: Boolean = false
|
isLocal: Boolean = false
|
||||||
): IrConstructor = convertCatching(constructor) {
|
): IrConstructor = convertCatching(constructor) {
|
||||||
|
val origin = constructor.computeIrOrigin(predefinedOrigin)
|
||||||
val isPrimary = constructor.isPrimary
|
val isPrimary = constructor.isPrimary
|
||||||
classifierStorage.preCacheTypeParameters(constructor)
|
classifierStorage.preCacheTypeParameters(constructor)
|
||||||
val signature = if (isLocal) null else signatureComposer.composeSignature(constructor)
|
val signature = if (isLocal) null else signatureComposer.composeSignature(constructor)
|
||||||
@@ -572,11 +573,11 @@ class Fir2IrDeclarationStorage(
|
|||||||
fun getOrCreateIrConstructor(
|
fun getOrCreateIrConstructor(
|
||||||
constructor: FirConstructor,
|
constructor: FirConstructor,
|
||||||
irParent: IrClass,
|
irParent: IrClass,
|
||||||
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED,
|
predefinedOrigin: IrDeclarationOrigin? = null,
|
||||||
isLocal: Boolean = false
|
isLocal: Boolean = false
|
||||||
): IrConstructor {
|
): IrConstructor {
|
||||||
getCachedIrConstructor(constructor)?.let { return it }
|
getCachedIrConstructor(constructor)?.let { return it }
|
||||||
return createIrConstructor(constructor, irParent, origin, isLocal)
|
return createIrConstructor(constructor, irParent, predefinedOrigin, isLocal)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun declareIrAccessor(
|
private fun declareIrAccessor(
|
||||||
@@ -760,10 +761,11 @@ class Fir2IrDeclarationStorage(
|
|||||||
property: FirProperty,
|
property: FirProperty,
|
||||||
irParent: IrDeclarationParent?,
|
irParent: IrDeclarationParent?,
|
||||||
thisReceiverOwner: IrClass? = irParent as? IrClass,
|
thisReceiverOwner: IrClass? = irParent as? IrClass,
|
||||||
origin: IrDeclarationOrigin = IrDeclarationOrigin.DEFINED,
|
predefinedOrigin: IrDeclarationOrigin? = null,
|
||||||
isLocal: Boolean = false,
|
isLocal: Boolean = false,
|
||||||
containingClass: ConeClassLikeLookupTag? = null,
|
containingClass: ConeClassLikeLookupTag? = null,
|
||||||
): IrProperty = convertCatching(property) {
|
): IrProperty = convertCatching(property) {
|
||||||
|
val origin = property.computeIrOrigin(predefinedOrigin)
|
||||||
classifierStorage.preCacheTypeParameters(property)
|
classifierStorage.preCacheTypeParameters(property)
|
||||||
if (property.delegate != null) {
|
if (property.delegate != null) {
|
||||||
val delegateReference = (property.delegate as? FirQualifiedAccess)?.calleeReference as? FirResolvedNamedReference
|
val delegateReference = (property.delegate as? FirQualifiedAccess)?.calleeReference as? FirResolvedNamedReference
|
||||||
@@ -930,7 +932,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
typeContext: ConversionTypeContext = ConversionTypeContext.DEFAULT,
|
typeContext: ConversionTypeContext = ConversionTypeContext.DEFAULT,
|
||||||
skipDefaultParameter: Boolean = false,
|
skipDefaultParameter: Boolean = false,
|
||||||
): IrValueParameter = convertCatching(valueParameter) {
|
): IrValueParameter = convertCatching(valueParameter) {
|
||||||
val origin = IrDeclarationOrigin.DEFINED
|
val origin = valueParameter.computeIrOrigin()
|
||||||
val type = valueParameter.returnTypeRef.toIrType()
|
val type = valueParameter.returnTypeRef.toIrType()
|
||||||
val irParameter = valueParameter.convertWithOffsets { startOffset, endOffset ->
|
val irParameter = valueParameter.convertWithOffsets { startOffset, endOffset ->
|
||||||
irFactory.createValueParameter(
|
irFactory.createValueParameter(
|
||||||
@@ -1058,7 +1060,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
return getIrCallableSymbol(
|
return getIrCallableSymbol(
|
||||||
firConstructorSymbol,
|
firConstructorSymbol,
|
||||||
getCachedIrDeclaration = ::getCachedIrConstructor,
|
getCachedIrDeclaration = ::getCachedIrConstructor,
|
||||||
createIrDeclaration = { parent, origin -> createIrConstructor(fir, parent as IrClass, origin = origin) },
|
createIrDeclaration = { parent, origin -> createIrConstructor(fir, parent as IrClass, predefinedOrigin = origin) },
|
||||||
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
|
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
|
||||||
val symbol = Fir2IrConstructorSymbol(signature)
|
val symbol = Fir2IrConstructorSymbol(signature)
|
||||||
val irConstructor = fir.convertWithOffsets { startOffset, endOffset ->
|
val irConstructor = fir.convertWithOffsets { startOffset, endOffset ->
|
||||||
@@ -1085,13 +1087,13 @@ class Fir2IrDeclarationStorage(
|
|||||||
val irParent = findIrParent(fir)
|
val irParent = findIrParent(fir)
|
||||||
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
||||||
val declarationOrigin = computeDeclarationOrigin(firFunctionSymbol, parentOrigin)
|
val declarationOrigin = computeDeclarationOrigin(firFunctionSymbol, parentOrigin)
|
||||||
createIrFunction(fir, irParent, origin = declarationOrigin).symbol
|
createIrFunction(fir, irParent, predefinedOrigin = declarationOrigin).symbol
|
||||||
}
|
}
|
||||||
is FirSimpleFunction -> {
|
is FirSimpleFunction -> {
|
||||||
return getIrCallableSymbol(
|
return getIrCallableSymbol(
|
||||||
firFunctionSymbol,
|
firFunctionSymbol,
|
||||||
getCachedIrDeclaration = ::getCachedIrFunction,
|
getCachedIrDeclaration = ::getCachedIrFunction,
|
||||||
createIrDeclaration = { parent, origin -> createIrFunction(fir, parent, origin = origin) },
|
createIrDeclaration = { parent, origin -> createIrFunction(fir, parent, predefinedOrigin = origin) },
|
||||||
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
|
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
|
||||||
val symbol = Fir2IrSimpleFunctionSymbol(signature, fir.containerSource)
|
val symbol = Fir2IrSimpleFunctionSymbol(signature, fir.containerSource)
|
||||||
val irFunction = fir.convertWithOffsets { startOffset, endOffset ->
|
val irFunction = fir.convertWithOffsets { startOffset, endOffset ->
|
||||||
@@ -1130,7 +1132,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
return getIrCallableSymbol(
|
return getIrCallableSymbol(
|
||||||
firPropertySymbol,
|
firPropertySymbol,
|
||||||
getCachedIrDeclaration = ::getCachedIrProperty,
|
getCachedIrDeclaration = ::getCachedIrProperty,
|
||||||
createIrDeclaration = { parent, origin -> createIrProperty(fir, parent, origin = origin) },
|
createIrDeclaration = { parent, origin -> createIrProperty(fir, parent, predefinedOrigin = origin) },
|
||||||
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
|
createIrLazyDeclaration = { signature, lazyParent, declarationOrigin ->
|
||||||
val symbol = Fir2IrPropertySymbol(signature, fir.containerSource)
|
val symbol = Fir2IrPropertySymbol(signature, fir.containerSource)
|
||||||
val irProperty = fir.convertWithOffsets { startOffset, endOffset ->
|
val irProperty = fir.convertWithOffsets { startOffset, endOffset ->
|
||||||
@@ -1212,6 +1214,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
(symbol.fir.origin is FirDeclarationOrigin.Enhancement || symbol.fir.origin is FirDeclarationOrigin.Java) -> {
|
(symbol.fir.origin is FirDeclarationOrigin.Enhancement || symbol.fir.origin is FirDeclarationOrigin.Java) -> {
|
||||||
IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
||||||
}
|
}
|
||||||
|
symbol.origin is FirDeclarationOrigin.Plugin -> IrPluginDeclarationOrigin((symbol.origin as FirDeclarationOrigin.Plugin).key)
|
||||||
else -> parentOrigin
|
else -> parentOrigin
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1244,7 +1247,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
propertyCache[fir]?.let { return it.backingField!!.symbol }
|
propertyCache[fir]?.let { return it.backingField!!.symbol }
|
||||||
val irParent = findIrParent(fir)
|
val irParent = findIrParent(fir)
|
||||||
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
||||||
createIrProperty(fir, irParent, origin = parentOrigin).apply {
|
createIrProperty(fir, irParent, predefinedOrigin = parentOrigin).apply {
|
||||||
setAndModifyParent(irParent)
|
setAndModifyParent(irParent)
|
||||||
}.backingField!!.symbol
|
}.backingField!!.symbol
|
||||||
}
|
}
|
||||||
@@ -1270,7 +1273,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
classifierStorage.createIrEnumEntry(
|
classifierStorage.createIrEnumEntry(
|
||||||
firDeclaration,
|
firDeclaration,
|
||||||
irParent = irParentClass,
|
irParent = irParentClass,
|
||||||
origin = if (containingFile != null) IrDeclarationOrigin.DEFINED else
|
predefinedOrigin = if (containingFile != null) IrDeclarationOrigin.DEFINED else
|
||||||
irParentClass?.origin ?: IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
irParentClass?.origin ?: IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
||||||
).symbol
|
).symbol
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ class Fir2IrVisitor(
|
|||||||
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?): IrElement {
|
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?): IrElement {
|
||||||
val irFunction = if (simpleFunction.visibility == Visibilities.Local) {
|
val irFunction = if (simpleFunction.visibility == Visibilities.Local) {
|
||||||
declarationStorage.createIrFunction(
|
declarationStorage.createIrFunction(
|
||||||
simpleFunction, irParent = conversionScope.parent(), origin = IrDeclarationOrigin.LOCAL_FUNCTION, isLocal = true
|
simpleFunction, irParent = conversionScope.parent(), predefinedOrigin = IrDeclarationOrigin.LOCAL_FUNCTION, isLocal = true
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
declarationStorage.getCachedIrFunction(simpleFunction)!!
|
declarationStorage.getCachedIrFunction(simpleFunction)!!
|
||||||
@@ -236,7 +236,7 @@ class Fir2IrVisitor(
|
|||||||
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: Any?): IrElement {
|
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: Any?): IrElement {
|
||||||
return anonymousFunction.convertWithOffsets { startOffset, endOffset ->
|
return anonymousFunction.convertWithOffsets { startOffset, endOffset ->
|
||||||
val irFunction = declarationStorage.createIrFunction(
|
val irFunction = declarationStorage.createIrFunction(
|
||||||
anonymousFunction, irParent = conversionScope.parent(), origin = IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA, isLocal = true
|
anonymousFunction, irParent = conversionScope.parent(), predefinedOrigin = IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA, isLocal = true
|
||||||
)
|
)
|
||||||
conversionScope.withFunction(irFunction) {
|
conversionScope.withFunction(irFunction) {
|
||||||
memberGenerator.convertFunctionContent(irFunction, anonymousFunction, containingClass = null)
|
memberGenerator.convertFunctionContent(irFunction, anonymousFunction, containingClass = null)
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* 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.backend
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
|
|
||||||
|
class IrPluginDeclarationOrigin(val pluginKey: FirPluginKey) : IrDeclarationOrigin {
|
||||||
|
override fun toString(): String {
|
||||||
|
return "GENERATED[${pluginKey}]"
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -118,7 +118,7 @@ class DelegatedMemberGenerator(
|
|||||||
): IrSimpleFunction {
|
): IrSimpleFunction {
|
||||||
val delegateFunction =
|
val delegateFunction =
|
||||||
declarationStorage.createIrFunction(
|
declarationStorage.createIrFunction(
|
||||||
delegateOverride, subClass, origin = IrDeclarationOrigin.DELEGATED_MEMBER,
|
delegateOverride, subClass, predefinedOrigin = IrDeclarationOrigin.DELEGATED_MEMBER,
|
||||||
containingClass = firSubClass.symbol.toLookupTag()
|
containingClass = firSubClass.symbol.toLookupTag()
|
||||||
)
|
)
|
||||||
val baseSymbols = mutableListOf<FirNamedFunctionSymbol>()
|
val baseSymbols = mutableListOf<FirNamedFunctionSymbol>()
|
||||||
@@ -188,7 +188,7 @@ class DelegatedMemberGenerator(
|
|||||||
): IrProperty {
|
): IrProperty {
|
||||||
val delegateProperty =
|
val delegateProperty =
|
||||||
declarationStorage.createIrProperty(
|
declarationStorage.createIrProperty(
|
||||||
firDelegateProperty, subClass, origin = IrDeclarationOrigin.DELEGATED_MEMBER,
|
firDelegateProperty, subClass, predefinedOrigin = IrDeclarationOrigin.DELEGATED_MEMBER,
|
||||||
containingClass = firSubClass.symbol.toLookupTag()
|
containingClass = firSubClass.symbol.toLookupTag()
|
||||||
)
|
)
|
||||||
// the overridden symbols should be collected only after all fake overrides for all superclases are created and bound to their
|
// the overridden symbols should be collected only after all fake overrides for all superclases are created and bound to their
|
||||||
|
|||||||
+11
@@ -72,6 +72,17 @@ class UnderAnnotatedWith(annotations: Set<AnnotationFqn>) : Annotated(annotation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// annotation class AllOpen // from library
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
@AllOpen
|
||||||
|
annotation class MyOpen
|
||||||
|
|
||||||
|
@MyOpen
|
||||||
|
class MyClass
|
||||||
|
*/
|
||||||
|
|
||||||
sealed class MetaAnnotated(final override val metaAnnotations: Set<AnnotationFqn>) : DeclarationPredicate() {
|
sealed class MetaAnnotated(final override val metaAnnotations: Set<AnnotationFqn>) : DeclarationPredicate() {
|
||||||
init {
|
init {
|
||||||
require(metaAnnotations.isNotEmpty()) {
|
require(metaAnnotations.isNotEmpty()) {
|
||||||
|
|||||||
+5
-1
@@ -7,4 +7,8 @@ package org.jetbrains.kotlin.fir.plugin
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
||||||
|
|
||||||
object AllOpenPluginKey : FirPluginKey()
|
object AllOpenPluginKey : FirPluginKey() {
|
||||||
|
override fun toString(): String {
|
||||||
|
return "AllOpenPlugin"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+3
-3
@@ -26,11 +26,11 @@ FILE fqName:<root> fileName:/classWithGeneratedMembersAndNestedClass.kt
|
|||||||
overridden:
|
overridden:
|
||||||
public open fun toString (): kotlin.String declared in kotlin.Any
|
public open fun toString (): kotlin.String declared in kotlin.Any
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||||
FUN name:materialize visibility:public modality:FINAL <> ($this:<root>.Foo) returnType:<root>.Foo
|
FUN GENERATED[AllOpenMembersGeneratorKey] name:materialize visibility:public modality:FINAL <> ($this:<root>.Foo) returnType:<root>.Foo
|
||||||
$this: VALUE_PARAMETER name:<this> type:<root>.Foo
|
$this: VALUE_PARAMETER name:<this> type:<root>.Foo
|
||||||
CLASS CLASS name:Nested modality:FINAL visibility:public superTypes:[kotlin.Any]
|
CLASS GENERATED[AllOpenMembersGeneratorKey] CLASS name:Nested modality:FINAL visibility:public superTypes:[kotlin.Any]
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Foo.Nested
|
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Foo.Nested
|
||||||
CONSTRUCTOR visibility:public <> () returnType:<root>.Foo.Nested [primary]
|
CONSTRUCTOR GENERATED[AllOpenMembersGeneratorKey] visibility:public <> () returnType:<root>.Foo.Nested [primary]
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||||
overridden:
|
overridden:
|
||||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
|
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
|
||||||
|
|||||||
+8
-5
@@ -64,11 +64,13 @@ FILE fqName:bar fileName:/generatedClassWithMembersAndNestedClasses.kt
|
|||||||
$this: CALL 'public final fun materialize (): bar.Bar declared in foo.AllOpenGenerated.NestedBar' type=bar.Bar origin=null
|
$this: CALL 'public final fun materialize (): bar.Bar declared in foo.AllOpenGenerated.NestedBar' type=bar.Bar origin=null
|
||||||
$this: GET_VAR 'val nestedBar: foo.AllOpenGenerated.NestedBar [val] declared in bar.testNestedClasses' type=foo.AllOpenGenerated.NestedBar origin=null
|
$this: GET_VAR 'val nestedBar: foo.AllOpenGenerated.NestedBar [val] declared in bar.testNestedClasses' type=foo.AllOpenGenerated.NestedBar origin=null
|
||||||
FILE fqName:foo fileName:__GENERATED DECLARATIONS__.kt
|
FILE fqName:foo fileName:__GENERATED DECLARATIONS__.kt
|
||||||
CLASS CLASS name:AllOpenGenerated modality:FINAL visibility:public superTypes:[kotlin.Any]
|
CLASS GENERATED[AllOpenClassGeneratorKey] CLASS name:AllOpenGenerated modality:FINAL visibility:public superTypes:[kotlin.Any]
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.AllOpenGenerated
|
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.AllOpenGenerated
|
||||||
CLASS CLASS name:NestedFoo modality:FINAL visibility:public superTypes:[kotlin.Any]
|
CONSTRUCTOR GENERATED[AllOpenClassGeneratorKey] visibility:public <> () returnType:foo.AllOpenGenerated [primary]
|
||||||
|
CLASS GENERATED[AllOpenClassGeneratorKey] CLASS name:NestedFoo modality:FINAL visibility:public superTypes:[kotlin.Any]
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.AllOpenGenerated.NestedFoo
|
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.AllOpenGenerated.NestedFoo
|
||||||
FUN name:materialize visibility:public modality:FINAL <> ($this:foo.AllOpenGenerated.NestedFoo) returnType:bar.Foo
|
CONSTRUCTOR GENERATED[AllOpenClassGeneratorKey] visibility:public <> () returnType:foo.AllOpenGenerated.NestedFoo [primary]
|
||||||
|
FUN GENERATED[AllOpenClassGeneratorKey] name:materialize visibility:public modality:FINAL <> ($this:foo.AllOpenGenerated.NestedFoo) returnType:bar.Foo
|
||||||
$this: VALUE_PARAMETER name:<this> type:foo.AllOpenGenerated.NestedFoo
|
$this: VALUE_PARAMETER name:<this> type:foo.AllOpenGenerated.NestedFoo
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||||
overridden:
|
overridden:
|
||||||
@@ -83,9 +85,10 @@ FILE fqName:foo fileName:__GENERATED DECLARATIONS__.kt
|
|||||||
overridden:
|
overridden:
|
||||||
public open fun toString (): kotlin.String declared in kotlin.Any
|
public open fun toString (): kotlin.String declared in kotlin.Any
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||||
CLASS CLASS name:NestedBar modality:FINAL visibility:public superTypes:[kotlin.Any]
|
CLASS GENERATED[AllOpenClassGeneratorKey] CLASS name:NestedBar modality:FINAL visibility:public superTypes:[kotlin.Any]
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.AllOpenGenerated.NestedBar
|
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:foo.AllOpenGenerated.NestedBar
|
||||||
FUN name:materialize visibility:public modality:FINAL <> ($this:foo.AllOpenGenerated.NestedBar) returnType:bar.Bar
|
CONSTRUCTOR GENERATED[AllOpenClassGeneratorKey] visibility:public <> () returnType:foo.AllOpenGenerated.NestedBar [primary]
|
||||||
|
FUN GENERATED[AllOpenClassGeneratorKey] name:materialize visibility:public modality:FINAL <> ($this:foo.AllOpenGenerated.NestedBar) returnType:bar.Bar
|
||||||
$this: VALUE_PARAMETER name:<this> type:foo.AllOpenGenerated.NestedBar
|
$this: VALUE_PARAMETER name:<this> type:foo.AllOpenGenerated.NestedBar
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||||
overridden:
|
overridden:
|
||||||
|
|||||||
+2
-2
@@ -32,5 +32,5 @@ FILE fqName:foo fileName:/topLevelCallables.kt
|
|||||||
VALUE_PARAMETER name:s index:0 type:kotlin.String
|
VALUE_PARAMETER name:s index:0 type:kotlin.String
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
FILE fqName:foo fileName:__GENERATED DECLARATIONS__.kt
|
FILE fqName:foo fileName:__GENERATED DECLARATIONS__.kt
|
||||||
FUN name:dummyMySuperClass visibility:public modality:FINAL <> (value:foo.MySuperClass) returnType:kotlin.String
|
FUN GENERATED[AllOpenPlugin] name:dummyMySuperClass visibility:public modality:FINAL <> (value:foo.MySuperClass) returnType:kotlin.String
|
||||||
VALUE_PARAMETER name:value index:0 type:foo.MySuperClass
|
VALUE_PARAMETER GENERATED[AllOpenPlugin] name:value index:0 type:foo.MySuperClass
|
||||||
|
|||||||
Reference in New Issue
Block a user