From 84c8697720c48b8ed852aca2d62a7e0ed1ac125d Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 22 Jan 2020 12:30:24 +0300 Subject: [PATCH] [FIR] Do not build synthetics for static or Unit returning get --- .../org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt | 6 ++++++ .../syntheticExtensions/javaProperties/FalseGetters.fir.kt | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt index 81dfcf85b99..a9ab376ac3c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt @@ -7,15 +7,19 @@ package org.jetbrains.kotlin.fir.resolve.calls import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.isStatic import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.symbols.AccessorSymbol import org.jetbrains.kotlin.fir.symbols.CallableId +import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.SyntheticSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.types.ConeClassLikeType +import org.jetbrains.kotlin.fir.types.coneTypeSafe import org.jetbrains.kotlin.load.java.propertyNameByGetMethodName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly @@ -46,6 +50,8 @@ class FirSyntheticPropertiesScope( if (fir.typeParameters.isNotEmpty()) return ProcessorAction.NEXT if (fir.valueParameters.isNotEmpty()) return ProcessorAction.NEXT + if (fir.isStatic) return ProcessorAction.NEXT + if (fir.returnTypeRef.coneTypeSafe()?.lookupTag?.classId == StandardClassIds.Unit) return ProcessorAction.NEXT val synthetic = SyntheticPropertySymbol( accessorId = symbol.callableId, diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FalseGetters.fir.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FalseGetters.fir.kt index 15970ed546e..859abe3f688 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FalseGetters.fir.kt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/FalseGetters.fir.kt @@ -2,8 +2,8 @@ fun foo(javaClass: JavaClass) { javaClass.something1 javaClass.something2 - javaClass.somethingStatic - javaClass.somethingVoid + javaClass.somethingStatic + javaClass.somethingVoid javaClass.ter }