[FIR] Add aliasSource to FirImport, FirImportImpl
This commit is contained in:
+11
-3
@@ -169,10 +169,10 @@ class DeclarationsConverter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun convertImportAlias(importAlias: LighterASTNode): String? {
|
private fun convertImportAlias(importAlias: LighterASTNode): Pair<String, FirSourceElement>? {
|
||||||
importAlias.forEachChildren {
|
importAlias.forEachChildren {
|
||||||
when (it.tokenType) {
|
when (it.tokenType) {
|
||||||
IDENTIFIER -> return it.asText
|
IDENTIFIER -> return Pair(it.asText, it.toFirSourceElement())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,11 +186,18 @@ class DeclarationsConverter(
|
|||||||
var importedFqName: FqName? = null
|
var importedFqName: FqName? = null
|
||||||
var isAllUnder = false
|
var isAllUnder = false
|
||||||
var aliasName: String? = null
|
var aliasName: String? = null
|
||||||
|
var aliasSource: FirSourceElement? = null
|
||||||
importDirective.forEachChildren {
|
importDirective.forEachChildren {
|
||||||
when (it.tokenType) {
|
when (it.tokenType) {
|
||||||
DOT_QUALIFIED_EXPRESSION, REFERENCE_EXPRESSION -> importedFqName = FqName(it.asText)
|
DOT_QUALIFIED_EXPRESSION, REFERENCE_EXPRESSION -> importedFqName = FqName(it.asText)
|
||||||
MUL -> isAllUnder = true
|
MUL -> isAllUnder = true
|
||||||
IMPORT_ALIAS -> aliasName = convertImportAlias(it)
|
IMPORT_ALIAS -> {
|
||||||
|
val importAlias = convertImportAlias(it)
|
||||||
|
if (importAlias != null) {
|
||||||
|
aliasName = importAlias.first
|
||||||
|
aliasSource = importAlias.second
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,6 +206,7 @@ class DeclarationsConverter(
|
|||||||
this.importedFqName = importedFqName
|
this.importedFqName = importedFqName
|
||||||
this.isAllUnder = isAllUnder
|
this.isAllUnder = isAllUnder
|
||||||
this.aliasName = aliasName?.let { Name.identifier(it) }
|
this.aliasName = aliasName?.let { Name.identifier(it) }
|
||||||
|
this.aliasSource = aliasSource
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -810,6 +810,7 @@ open class RawFirBuilder(
|
|||||||
importedFqName = importDirective.importedFqName
|
importedFqName = importDirective.importedFqName
|
||||||
isAllUnder = importDirective.isAllUnder
|
isAllUnder = importDirective.isAllUnder
|
||||||
aliasName = importDirective.aliasName?.let { Name.identifier(it) }
|
aliasName = importDirective.aliasName?.let { Name.identifier(it) }
|
||||||
|
aliasSource = importDirective.alias?.nameIdentifier?.toFirSourceElement()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (declaration in file.declarations) {
|
for (declaration in file.declarations) {
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ abstract class FirErrorImport : FirPureAbstractElement(), FirImport, FirDiagnost
|
|||||||
abstract override val importedFqName: FqName?
|
abstract override val importedFqName: FqName?
|
||||||
abstract override val isAllUnder: Boolean
|
abstract override val isAllUnder: Boolean
|
||||||
abstract override val aliasName: Name?
|
abstract override val aliasName: Name?
|
||||||
|
abstract override val aliasSource: FirSourceElement?
|
||||||
abstract override val diagnostic: ConeDiagnostic
|
abstract override val diagnostic: ConeDiagnostic
|
||||||
abstract val delegate: FirImport
|
abstract val delegate: FirImport
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ interface FirImport : FirElement {
|
|||||||
val importedFqName: FqName?
|
val importedFqName: FqName?
|
||||||
val isAllUnder: Boolean
|
val isAllUnder: Boolean
|
||||||
val aliasName: Name?
|
val aliasName: Name?
|
||||||
|
val aliasSource: FirSourceElement?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitImport(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitImport(this, data)
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ abstract class FirResolvedImport : FirPureAbstractElement(), FirImport {
|
|||||||
abstract override val importedFqName: FqName?
|
abstract override val importedFqName: FqName?
|
||||||
abstract override val isAllUnder: Boolean
|
abstract override val isAllUnder: Boolean
|
||||||
abstract override val aliasName: Name?
|
abstract override val aliasName: Name?
|
||||||
|
abstract override val aliasSource: FirSourceElement?
|
||||||
abstract val delegate: FirImport
|
abstract val delegate: FirImport
|
||||||
abstract val packageFqName: FqName
|
abstract val packageFqName: FqName
|
||||||
abstract val relativeClassName: FqName?
|
abstract val relativeClassName: FqName?
|
||||||
|
|||||||
+3
@@ -23,15 +23,18 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
|
|
||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirErrorImportBuilder {
|
class FirErrorImportBuilder {
|
||||||
|
var aliasSource: FirSourceElement? = null
|
||||||
lateinit var diagnostic: ConeDiagnostic
|
lateinit var diagnostic: ConeDiagnostic
|
||||||
lateinit var delegate: FirImport
|
lateinit var delegate: FirImport
|
||||||
|
|
||||||
fun build(): FirErrorImport {
|
fun build(): FirErrorImport {
|
||||||
return FirErrorImportImpl(
|
return FirErrorImportImpl(
|
||||||
|
aliasSource,
|
||||||
diagnostic,
|
diagnostic,
|
||||||
delegate,
|
delegate,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalContracts::class)
|
@OptIn(ExperimentalContracts::class)
|
||||||
|
|||||||
+2
@@ -26,6 +26,7 @@ class FirImportBuilder {
|
|||||||
var importedFqName: FqName? = null
|
var importedFqName: FqName? = null
|
||||||
var isAllUnder: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
var isAllUnder: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
|
||||||
var aliasName: Name? = null
|
var aliasName: Name? = null
|
||||||
|
var aliasSource: FirSourceElement? = null
|
||||||
|
|
||||||
fun build(): FirImport {
|
fun build(): FirImport {
|
||||||
return FirImportImpl(
|
return FirImportImpl(
|
||||||
@@ -33,6 +34,7 @@ class FirImportBuilder {
|
|||||||
importedFqName,
|
importedFqName,
|
||||||
isAllUnder,
|
isAllUnder,
|
||||||
aliasName,
|
aliasName,
|
||||||
|
aliasSource,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
internal class FirErrorImportImpl(
|
internal class FirErrorImportImpl(
|
||||||
|
override val aliasSource: FirSourceElement?,
|
||||||
override val diagnostic: ConeDiagnostic,
|
override val diagnostic: ConeDiagnostic,
|
||||||
override var delegate: FirImport,
|
override var delegate: FirImport,
|
||||||
) : FirErrorImport() {
|
) : FirErrorImport() {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ internal class FirImportImpl(
|
|||||||
override val importedFqName: FqName?,
|
override val importedFqName: FqName?,
|
||||||
override val isAllUnder: Boolean,
|
override val isAllUnder: Boolean,
|
||||||
override val aliasName: Name?,
|
override val aliasName: Name?,
|
||||||
|
override val aliasSource: FirSourceElement?,
|
||||||
) : FirPureAbstractElement(), FirImport {
|
) : FirPureAbstractElement(), FirImport {
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
|||||||
+1
@@ -27,6 +27,7 @@ internal class FirResolvedImportImpl(
|
|||||||
override val importedFqName: FqName? get() = delegate.importedFqName
|
override val importedFqName: FqName? get() = delegate.importedFqName
|
||||||
override val isAllUnder: Boolean get() = delegate.isAllUnder
|
override val isAllUnder: Boolean get() = delegate.isAllUnder
|
||||||
override val aliasName: Name? get() = delegate.aliasName
|
override val aliasName: Name? get() = delegate.aliasName
|
||||||
|
override val aliasSource: FirSourceElement? get() = delegate.aliasSource
|
||||||
override val resolvedClassId: ClassId? get() = relativeClassName?.let { ClassId(packageFqName, it, false) }
|
override val resolvedClassId: ClassId? get() = relativeClassName?.let { ClassId(packageFqName, it, false) }
|
||||||
override val importedName: Name? get() = importedFqName?.shortName()
|
override val importedName: Name? get() = importedFqName?.shortName()
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
|||||||
impl(import)
|
impl(import)
|
||||||
|
|
||||||
impl(resolvedImport) {
|
impl(resolvedImport) {
|
||||||
delegateFields(listOf("aliasName", "importedFqName", "isAllUnder"), "delegate")
|
delegateFields(listOf("aliasName", "aliasSource", "importedFqName", "isAllUnder"), "delegate")
|
||||||
|
|
||||||
default("source") {
|
default("source") {
|
||||||
delegate = "delegate"
|
delegate = "delegate"
|
||||||
|
|||||||
+1
@@ -407,6 +407,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
+field("importedFqName", fqNameType, nullable = true)
|
+field("importedFqName", fqNameType, nullable = true)
|
||||||
+booleanField("isAllUnder")
|
+booleanField("isAllUnder")
|
||||||
+field("aliasName", nameType, nullable = true)
|
+field("aliasName", nameType, nullable = true)
|
||||||
|
+field("aliasSource", sourceElementType, nullable = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
resolvedImport.configure {
|
resolvedImport.configure {
|
||||||
|
|||||||
Reference in New Issue
Block a user