|
5 | 5 |
|
6 | 6 | package org.jetbrains.kotlin.fir.analysis.jvm.checkers.expression
|
7 | 7 |
|
| 8 | +import org.jetbrains.kotlin.config.LanguageFeature |
8 | 9 | import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
9 | 10 | import org.jetbrains.kotlin.diagnostics.reportOn
|
10 | 11 | import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind
|
11 | 12 | import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
12 | 13 | import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker
|
13 | 14 | import org.jetbrains.kotlin.fir.analysis.checkers.isValueClass
|
14 | 15 | import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
| 16 | +import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.IDENTITY_SENSITIVE_OPERATIONS_WITH_VALUE_TYPE |
15 | 17 | import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SYNCHRONIZED_BLOCK_ON_JAVA_VALUE_BASED_CLASS
|
16 | 18 | import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors.SYNCHRONIZED_BLOCK_ON_VALUE_CLASS_OR_PRIMITIVE
|
17 | 19 | import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
18 | 20 | import org.jetbrains.kotlin.fir.expressions.argument
|
19 | 21 | import org.jetbrains.kotlin.fir.expressions.arguments
|
20 | 22 | import org.jetbrains.kotlin.fir.expressions.resolvedArgumentMapping
|
| 23 | +import org.jetbrains.kotlin.fir.languageVersionSettings |
21 | 24 | import org.jetbrains.kotlin.fir.references.toResolvedCallableSymbol
|
22 | 25 | import org.jetbrains.kotlin.fir.types.FirTypeProjectionWithVariance
|
23 | 26 | import org.jetbrains.kotlin.fir.types.coneType
|
@@ -86,6 +89,11 @@ object FirJvmIdentitySensitiveCallWithValueTypeObjectChecker : FirFunctionCallCh
|
86 | 89 | if (type.isJavaValueBasedClassAndWarningsEnabled(context.session)) {
|
87 | 90 | reporter.reportOn(argument.source, SYNCHRONIZED_BLOCK_ON_JAVA_VALUE_BASED_CLASS, type, context)
|
88 | 91 | }
|
| 92 | + if (!context.session.languageVersionSettings.supportsFeature(LanguageFeature.DisableWarningsForIdentitySensitiveOperationsOnValueClassesAndPrimitives) && |
| 93 | + type.isFlexiblePrimitive() |
| 94 | + ) { |
| 95 | + reporter.reportOn(argument.source, IDENTITY_SENSITIVE_OPERATIONS_WITH_VALUE_TYPE, type, context) |
| 96 | + } |
89 | 97 | }
|
90 | 98 | }
|
91 | 99 | }
|
0 commit comments