FIR checker: fix positioning of CONFLICTING_IMPORT
FE1.0 puts it on the alias when applicable.
This commit is contained in:
committed by
Mikhail Glukhikh
parent
4ad5f01324
commit
52b247937e
+1
-1
@@ -1322,7 +1322,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
parameter<Name>("name")
|
||||
}
|
||||
|
||||
val CONFLICTING_IMPORT by error<KtImportDirective>(PositioningStrategy.IMPORT_LAST_NAME) {
|
||||
val CONFLICTING_IMPORT by error<KtImportDirective>(PositioningStrategy.IMPORT_ALIAS) {
|
||||
parameter<Name>("name")
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -108,6 +108,7 @@ enum class PositioningStrategy(private val strategy: String? = null) {
|
||||
ENUM_MODIFIER,
|
||||
FIELD_KEYWORD,
|
||||
TAILREC_MODIFIER,
|
||||
IMPORT_ALIAS,
|
||||
PROPERTY_DELEGATE,
|
||||
|
||||
;
|
||||
|
||||
+1
-1
@@ -684,7 +684,7 @@ object FirErrors {
|
||||
val CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON by error1<KtImportDirective, Name>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
||||
val PACKAGE_CANNOT_BE_IMPORTED by error0<KtImportDirective>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
||||
val CANNOT_BE_IMPORTED by error1<KtImportDirective, Name>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
||||
val CONFLICTING_IMPORT by error1<KtImportDirective, Name>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
||||
val CONFLICTING_IMPORT by error1<KtImportDirective, Name>(SourceElementPositioningStrategies.IMPORT_ALIAS)
|
||||
val OPERATOR_RENAMED_ON_IMPORT by error0<KtImportDirective>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
||||
|
||||
// Suspend errors
|
||||
|
||||
+17
@@ -879,6 +879,23 @@ object LightTreePositioningStrategies {
|
||||
}
|
||||
}
|
||||
|
||||
val IMPORT_ALIAS: LightTreePositioningStrategy = object : LightTreePositioningStrategy() {
|
||||
override fun mark(
|
||||
node: LighterASTNode,
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
tree: FlyweightCapableTreeStructure<LighterASTNode>
|
||||
): List<TextRange> {
|
||||
tree.findChildByType(node, KtNodeTypes.IMPORT_ALIAS)?.let {
|
||||
tree.findChildByType(it, KtTokens.IDENTIFIER)?.let {
|
||||
return markElement(it, startOffset, endOffset, tree, node)
|
||||
}
|
||||
}
|
||||
return IMPORT_LAST_NAME.mark(node, startOffset, endOffset, tree)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val SPREAD_OPERATOR: LightTreePositioningStrategy = object : LightTreePositioningStrategy() {
|
||||
override fun mark(
|
||||
node: LighterASTNode,
|
||||
|
||||
+5
@@ -330,6 +330,11 @@ object SourceElementPositioningStrategies {
|
||||
PositioningStrategies.TAILREC_MODIFIER
|
||||
)
|
||||
|
||||
val IMPORT_ALIAS = SourceElementPositioningStrategy(
|
||||
LightTreePositioningStrategies.IMPORT_ALIAS,
|
||||
PositioningStrategies.IMPORT_ALIAS
|
||||
)
|
||||
|
||||
val PROPERTY_DELEGATE = SourceElementPositioningStrategy(
|
||||
LightTreePositioningStrategies.PROPERTY_DELEGATE,
|
||||
PositioningStrategies.PROPERTY_DELEGATE
|
||||
|
||||
@@ -46,4 +46,8 @@ import a.B
|
||||
|
||||
// FILE: 6.kt
|
||||
import a.<!CONFLICTING_IMPORT!>B<!>
|
||||
import b.<!CONFLICTING_IMPORT!>B<!>
|
||||
import b.<!CONFLICTING_IMPORT!>B<!>
|
||||
|
||||
// FILE: 7.kt
|
||||
import a.B as <!CONFLICTING_IMPORT!>Foo<!>
|
||||
import b.B as <!CONFLICTING_IMPORT!>Foo<!>
|
||||
|
||||
Reference in New Issue
Block a user