|
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