[FIR] Fix false negative REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE
... in presence of typealiases. #KT-61921
This commit is contained in:
committed by
Space Team
parent
373ffbc779
commit
e788c7166a
+5
@@ -3,6 +3,11 @@ FILE: RedundantSingleExpressionStringTemplateChecker.kt
|
||||
public get(): R|kotlin/String|
|
||||
public final val y: R|kotlin/String| = <strcat>(R|/x|)
|
||||
public get(): R|kotlin/String|
|
||||
public final typealias S = R|kotlin/String|
|
||||
public final val x2: R|S| = String(Hello)
|
||||
public get(): R|S|
|
||||
public final val y2: R|kotlin/String| = <strcat>(R|/x2|)
|
||||
public get(): R|kotlin/String|
|
||||
public final val z: R|kotlin/String| = <strcat>(R|/y|.R|kotlin/Any.hashCode|())
|
||||
public get(): R|kotlin/String|
|
||||
public final fun toString(x: R|kotlin/String|): R|kotlin/String| {
|
||||
|
||||
+4
@@ -2,6 +2,10 @@ val x = "Hello"
|
||||
|
||||
val y = "$<!REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE!>x<!>"
|
||||
|
||||
typealias S = String
|
||||
val x2: S = "Hello"
|
||||
val y2 = "$<!REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE!>x2<!>"
|
||||
|
||||
val z = "${y.hashCode()}"
|
||||
|
||||
fun toString(x: String) = "IC$x"
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.REDUNDANT_SINGLE_
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.arguments
|
||||
import org.jetbrains.kotlin.fir.types.classId
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.fullyExpandedClassId
|
||||
import org.jetbrains.kotlin.fir.types.resolvedType
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.psi.KtStringTemplateExpression
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.util.getChildren
|
||||
object RedundantSingleExpressionStringTemplateChecker : FirStringConcatenationCallChecker() {
|
||||
override fun check(expression: FirStringConcatenationCall, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
for (argumentExpression in expression.arguments) {
|
||||
if (argumentExpression.resolvedType.classId == StandardClassIds.String &&
|
||||
if (argumentExpression.resolvedType.fullyExpandedClassId(context.session) == StandardClassIds.String &&
|
||||
argumentExpression.stringParentChildrenCount() == 1 // there is no more children in original string template
|
||||
) {
|
||||
reporter.reportOn(argumentExpression.source, REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE, context)
|
||||
|
||||
Reference in New Issue
Block a user