diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt index 23b3dbcd7d4..f30e49095f6 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantSetterParameterTypeChecker.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.analysis.checkers.extended +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirPropertyChecker import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter @@ -21,7 +22,7 @@ object RedundantSetterParameterTypeChecker : FirPropertyChecker() { val propertyTypeSource = declaration.returnTypeRef.source val setterParameterTypeSource = valueParameter.returnTypeRef.source ?: return - if (setterParameterTypeSource != propertyTypeSource) { + if (setterParameterTypeSource.kind !is FirFakeSourceElementKind && setterParameterTypeSource != propertyTypeSource) { reporter.reportOn(setterParameterTypeSource, REDUNDANT_SETTER_PARAMETER_TYPE, context) } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt index 13a9a944988..f9dd8d9e8e9 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.analysis.checkers.type +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.context.findClosest import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirDeprecationChecker @@ -17,11 +18,11 @@ import org.jetbrains.kotlin.fir.types.coneTypeSafe object FirDeprecatedTypeChecker : FirTypeRefChecker() { override fun check(typeRef: FirTypeRef, context: CheckerContext, reporter: DiagnosticReporter) { - if (context.findClosest() != null) return - + val source = typeRef.source ?: return + if (source.kind is FirFakeSourceElementKind) return val resolved = typeRef.coneTypeSafe() ?: return val symbol = resolved.lookupTag.toSymbol(context.session) ?: return - FirDeprecationChecker.reportDeprecationIfNeeded(typeRef.source, symbol, null, context, reporter) + FirDeprecationChecker.reportDeprecationIfNeeded(source, symbol, null, context, reporter) } } diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt index fae80d3ff2f..93e6cf3b0c5 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt @@ -1233,10 +1233,11 @@ class DeclarationsConverter( var modifiers = Modifier() var isGetter = true var returnType: FirTypeRef? = null + val propertyTypeRefToUse = propertyTypeRef.copyWithNewSourceKind(FirFakeSourceElementKind.ImplicitTypeRef) var firValueParameters: FirValueParameter = buildDefaultSetterValueParameter { moduleData = baseModuleData origin = FirDeclarationOrigin.Source - returnTypeRef = propertyTypeRef + returnTypeRef = propertyTypeRefToUse symbol = FirValueParameterSymbol(NAME_FOR_DEFAULT_VALUE_PARAMETER) } var block: LighterASTNode? = null @@ -1248,7 +1249,7 @@ class DeclarationsConverter( SET_KEYWORD -> isGetter = false MODIFIER_LIST -> modifiers = convertModifierList(it) TYPE_REFERENCE -> returnType = convertType(it) - VALUE_PARAMETER_LIST -> firValueParameters = convertSetterParameter(it, propertyTypeRef) + VALUE_PARAMETER_LIST -> firValueParameters = convertSetterParameter(it, propertyTypeRefToUse) CONTRACT_EFFECT_LIST -> outerContractDescription = obtainContractDescription(it) BLOCK -> block = it else -> if (it.isExpression()) expression = it @@ -1272,7 +1273,7 @@ class DeclarationsConverter( sourceElement, baseModuleData, FirDeclarationOrigin.Source, - propertyTypeRef, + propertyTypeRefToUse, accessorVisibility, isGetter ) @@ -1287,7 +1288,7 @@ class DeclarationsConverter( source = sourceElement moduleData = baseModuleData origin = FirDeclarationOrigin.Source - returnTypeRef = returnType ?: if (isGetter) propertyTypeRef else implicitUnitType + returnTypeRef = returnType ?: if (isGetter) propertyTypeRefToUse else implicitUnitType symbol = FirPropertyAccessorSymbol() this.isGetter = isGetter this.status = status diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 4eb46ca57af..5aa9540648a 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -368,6 +368,7 @@ open class RawFirBuilder( isExternal = property.hasModifier(EXTERNAL_KEYWORD) || this@toFirPropertyAccessor?.hasModifier(EXTERNAL_KEYWORD) == true } + val propertyTypeRefToUse = propertyTypeRef.copyWithNewSourceKind(FirFakeSourceElementKind.ImplicitTypeRef) return when { this != null && hasBody() -> { // Property has a non-default getter or setter. @@ -379,7 +380,7 @@ open class RawFirBuilder( moduleData = baseModuleData origin = FirDeclarationOrigin.Source returnTypeRef = if (isGetter) { - returnTypeReference?.convertSafe() ?: propertyTypeRef + returnTypeReference?.convertSafe() ?: propertyTypeRefToUse } else { returnTypeReference.toFirOrUnitType() } @@ -387,13 +388,13 @@ open class RawFirBuilder( this.status = status extractAnnotationsTo(this) this@RawFirBuilder.context.firFunctionTargets += accessorTarget - extractValueParametersTo(this, propertyTypeRef) + extractValueParametersTo(this, propertyTypeRefToUse) if (!isGetter && valueParameters.isEmpty()) { valueParameters += buildDefaultSetterValueParameter { this.source = source.fakeElement(FirFakeSourceElementKind.DefaultAccessor) moduleData = baseModuleData origin = FirDeclarationOrigin.Source - returnTypeRef = propertyTypeRef + returnTypeRef = propertyTypeRefToUse symbol = FirValueParameterSymbol(NAME_FOR_DEFAULT_VALUE_PARAMETER) } } @@ -420,7 +421,7 @@ open class RawFirBuilder( propertySource, baseModuleData, FirDeclarationOrigin.Source, - propertyTypeRef, + propertyTypeRefToUse, accessorVisibility, isGetter ) diff --git a/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt b/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt index a18a7c5ee94..c2534d46451 100644 --- a/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt +++ b/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt @@ -24,8 +24,8 @@ class Properties { var y : Obsolete = Obsolete() var n : Obsolete - get() = Obsolete() - set(value) {} + get() = Obsolete() + set(value) {} } fun param(param: Obsolete) { param.use() } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.fir.kt deleted file mode 100644 index b7f33741cdc..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.fir.kt +++ /dev/null @@ -1,14 +0,0 @@ -// !JVM_TARGET: 1.8 -// !JVM_DEFAULT_MODE: enable - -interface B { - - @JvmDefault - val prop1: String - @JvmDefault get() = "" - - - var prop2: String - @JvmDefault get() = "" - @JvmDefault set(value) {} -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt index 23522da517b..b6a4fcb2f79 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !JVM_TARGET: 1.8 // !JVM_DEFAULT_MODE: enable