From d4c97a3883d7ea6503ed794b00158cce2e393db0 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 7 Jun 2022 18:11:53 +0200 Subject: [PATCH] [analysis api] convert KtFunctionLikeSignature/KtVariableLikeSignature to non-data classes --- .../api/symbols/KtCallableSignature.kt | 49 +++++++++++++++++-- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSignature.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSignature.kt index 846774f7b63..98c5965169b 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSignature.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtCallableSignature.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication import org.jetbrains.kotlin.analysis.api.annotations.KtConstantAnnotationValue import org.jetbrains.kotlin.analysis.api.annotations.annotationsByClassId import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken -import org.jetbrains.kotlin.analysis.api.types.KtSubstitutor import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.builtins.StandardNames @@ -52,7 +51,7 @@ public sealed class KtCallableSignature : KtLifetimeOw /** * A signature of a function-like symbol. */ -public data class KtFunctionLikeSignature( +public class KtFunctionLikeSignature( private val _symbol: S, private val _returnType: KtType, private val _receiverType: KtType?, @@ -72,12 +71,34 @@ public data class KtFunctionLikeSignature( */ public val valueParameters: List> get() = withValidityAssertion { _valueParameters } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as KtFunctionLikeSignature<*> + + if (_symbol != other._symbol) return false + if (_returnType != other._returnType) return false + if (_receiverType != other._receiverType) return false + if (_valueParameters != other._valueParameters) return false + + return true + } + + override fun hashCode(): Int { + var result = _symbol.hashCode() + result = 31 * result + _returnType.hashCode() + result = 31 * result + (_receiverType?.hashCode() ?: 0) + result = 31 * result + _valueParameters.hashCode() + return result + } } /** * A signature of a variable-like symbol. */ -public data class KtVariableLikeSignature( +public class KtVariableLikeSignature( private val _symbol: S, private val _returnType: KtType, private val _receiverType: KtType?, @@ -116,7 +137,7 @@ public data class KtVariableLikeSignature( * * @see org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder.unwrapUseSiteSubstitutionOverride */ - val name: Name + public val name: Name get() = withValidityAssertion { // The case where PSI is null is when calling `invoke()` on a variable with functional type, e.g. `x(1)` below: // @@ -147,4 +168,24 @@ public data class KtVariableLikeSignature( implicitAnnotations.singleOrNull() } } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as KtVariableLikeSignature<*> + + if (_symbol != other._symbol) return false + if (_returnType != other._returnType) return false + if (_receiverType != other._receiverType) return false + + return true + } + + override fun hashCode(): Int { + var result = _symbol.hashCode() + result = 31 * result + _returnType.hashCode() + result = 31 * result + (_receiverType?.hashCode() ?: 0) + return result + } }