[IR] Provide default implementations of symbol factories in SymbolTableExtension
This commit is contained in:
committed by
Space Team
parent
c2f9961d4f
commit
0b502f08d5
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.ir.IrLock
|
|||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
import org.jetbrains.kotlin.ir.symbols.*
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.utils.threadLocal
|
import org.jetbrains.kotlin.utils.threadLocal
|
||||||
|
|
||||||
@@ -109,9 +110,11 @@ abstract class SymbolTableExtension<
|
|||||||
|
|
||||||
protected abstract fun defaultScriptFactory(startOffset: Int, endOffset: Int, script: Script, symbol: IrScriptSymbol): IrScript
|
protected abstract fun defaultScriptFactory(startOffset: Int, endOffset: Int, script: Script, symbol: IrScriptSymbol): IrScript
|
||||||
|
|
||||||
protected abstract fun createScriptSymbol(declaration: Script, signature: IdSignature?): IrScriptSymbol
|
protected open fun createScriptSymbol(declaration: Script, signature: IdSignature?): IrScriptSymbol {
|
||||||
|
return IrScriptSymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------ script ------------------------------------
|
// ------------------------------------ class ------------------------------------
|
||||||
|
|
||||||
fun declareClass(declaration: Class, classFactory: (IrClassSymbol) -> IrClass): IrClass {
|
fun declareClass(declaration: Class, classFactory: (IrClassSymbol) -> IrClass): IrClass {
|
||||||
return declare(
|
return declare(
|
||||||
@@ -148,8 +151,13 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicClassSymbol(declaration, signature) } ?: createPrivateClassSymbol(declaration)
|
return signature?.let { createPublicClassSymbol(declaration, signature) } ?: createPrivateClassSymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicClassSymbol(declaration: Class, signature: IdSignature): IrClassSymbol
|
protected open fun createPublicClassSymbol(declaration: Class, signature: IdSignature): IrClassSymbol {
|
||||||
protected abstract fun createPrivateClassSymbol(descriptor: Class): IrClassSymbol
|
return IrClassPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivateClassSymbol(descriptor: Class): IrClassSymbol {
|
||||||
|
return IrClassSymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------ constructor ------------------------------------
|
// ------------------------------------ constructor ------------------------------------
|
||||||
|
|
||||||
@@ -191,8 +199,13 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicConstructorSymbol(declaration, signature) } ?: createPrivateConstructorSymbol(declaration)
|
return signature?.let { createPublicConstructorSymbol(declaration, signature) } ?: createPrivateConstructorSymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicConstructorSymbol(declaration: Constructor, signature: IdSignature): IrConstructorSymbol
|
protected open fun createPublicConstructorSymbol(declaration: Constructor, signature: IdSignature): IrConstructorSymbol {
|
||||||
protected abstract fun createPrivateConstructorSymbol(declaration: Constructor): IrConstructorSymbol
|
return IrConstructorPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivateConstructorSymbol(declaration: Constructor): IrConstructorSymbol {
|
||||||
|
return IrConstructorSymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------ enum entry ------------------------------------
|
// ------------------------------------ enum entry ------------------------------------
|
||||||
|
|
||||||
@@ -240,8 +253,13 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicEnumEntrySymbol(declaration, signature) } ?: createPrivateEnumEntrySymbol(declaration)
|
return signature?.let { createPublicEnumEntrySymbol(declaration, signature) } ?: createPrivateEnumEntrySymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicEnumEntrySymbol(declaration: Class, signature: IdSignature): IrEnumEntrySymbol
|
protected open fun createPublicEnumEntrySymbol(declaration: Class, signature: IdSignature): IrEnumEntrySymbol {
|
||||||
protected abstract fun createPrivateEnumEntrySymbol(declaration: Class): IrEnumEntrySymbol
|
return IrEnumEntryPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivateEnumEntrySymbol(declaration: Class): IrEnumEntrySymbol {
|
||||||
|
return IrEnumEntrySymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract fun defaultEnumEntryFactory(
|
protected abstract fun defaultEnumEntryFactory(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -311,8 +329,14 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicFieldSymbol(declaration, signature) } ?: createPrivateFieldSymbol(declaration)
|
return signature?.let { createPublicFieldSymbol(declaration, signature) } ?: createPrivateFieldSymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicFieldSymbol(declaration: Property, signature: IdSignature): IrFieldSymbol
|
protected open fun createPublicFieldSymbol(declaration: Property, signature: IdSignature): IrFieldSymbol {
|
||||||
protected abstract fun createPrivateFieldSymbol(declaration: Property): IrFieldSymbol
|
return IrFieldPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivateFieldSymbol(declaration: Property): IrFieldSymbol {
|
||||||
|
return IrFieldSymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected abstract fun defaultFieldFactory(
|
protected abstract fun defaultFieldFactory(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -373,8 +397,13 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicPropertySymbol(declaration, signature) } ?: createPrivatePropertySymbol(declaration)
|
return signature?.let { createPublicPropertySymbol(declaration, signature) } ?: createPrivatePropertySymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicPropertySymbol(declaration: Property, signature: IdSignature): IrPropertySymbol
|
protected open fun createPublicPropertySymbol(declaration: Property, signature: IdSignature): IrPropertySymbol {
|
||||||
protected abstract fun createPrivatePropertySymbol(declaration: Property): IrPropertySymbol
|
return IrPropertyPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivatePropertySymbol(declaration: Property): IrPropertySymbol {
|
||||||
|
return IrPropertySymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract fun defaultPropertyFactory(
|
protected abstract fun defaultPropertyFactory(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -422,8 +451,13 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicTypeAliasSymbol(declaration, signature) } ?: createPrivateTypeAliasSymbol(declaration)
|
return signature?.let { createPublicTypeAliasSymbol(declaration, signature) } ?: createPrivateTypeAliasSymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicTypeAliasSymbol(declaration: TypeAlias, signature: IdSignature): IrTypeAliasSymbol
|
protected open fun createPublicTypeAliasSymbol(declaration: TypeAlias, signature: IdSignature): IrTypeAliasSymbol {
|
||||||
protected abstract fun createPrivateTypeAliasSymbol(declaration: TypeAlias): IrTypeAliasSymbol
|
return IrTypeAliasPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivateTypeAliasSymbol(declaration: TypeAlias): IrTypeAliasSymbol {
|
||||||
|
return IrTypeAliasSymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------ function ------------------------------------
|
// ------------------------------------ function ------------------------------------
|
||||||
|
|
||||||
@@ -478,8 +512,13 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicFunctionSymbol(declaration, signature) } ?: createPrivateFunctionSymbol(declaration)
|
return signature?.let { createPublicFunctionSymbol(declaration, signature) } ?: createPrivateFunctionSymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicFunctionSymbol(declaration: Function, signature: IdSignature): IrSimpleFunctionSymbol
|
protected open fun createPublicFunctionSymbol(declaration: Function, signature: IdSignature): IrSimpleFunctionSymbol {
|
||||||
protected abstract fun createPrivateFunctionSymbol(declaration: Function): IrSimpleFunctionSymbol
|
return IrSimpleFunctionPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivateFunctionSymbol(declaration: Function): IrSimpleFunctionSymbol {
|
||||||
|
return IrSimpleFunctionSymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------ type parameter ------------------------------------
|
// ------------------------------------ type parameter ------------------------------------
|
||||||
|
|
||||||
@@ -543,8 +582,13 @@ abstract class SymbolTableExtension<
|
|||||||
return signature?.let { createPublicTypeParameterSymbol(declaration, signature) } ?: createPrivateTypeParameterSymbol(declaration)
|
return signature?.let { createPublicTypeParameterSymbol(declaration, signature) } ?: createPrivateTypeParameterSymbol(declaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createPublicTypeParameterSymbol(declaration: TypeParameter, signature: IdSignature): IrTypeParameterSymbol
|
protected open fun createPublicTypeParameterSymbol(declaration: TypeParameter, signature: IdSignature): IrTypeParameterSymbol {
|
||||||
protected abstract fun createPrivateTypeParameterSymbol(declaration: TypeParameter): IrTypeParameterSymbol
|
return IrTypeParameterPublicSymbolImpl(signature)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected open fun createPrivateTypeParameterSymbol(declaration: TypeParameter): IrTypeParameterSymbol {
|
||||||
|
return IrTypeParameterSymbolImpl()
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract fun defaultTypeParameterFactory(
|
protected abstract fun defaultTypeParameterFactory(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
|
|||||||
Reference in New Issue
Block a user