[SLC] avoid symbol restoring during comparison
^KT-55191 Fixed
This commit is contained in:
committed by
Space Team
parent
13917887e0
commit
0a003be1f0
+1
-1
@@ -164,7 +164,7 @@ abstract class SymbolLightClassForClassLike<SType : KtClassOrObjectSymbol> prote
|
||||
return other.classOrObjectDeclaration == classOrObjectDeclaration
|
||||
}
|
||||
|
||||
return compareSymbolPointers(ktModule, classOrObjectSymbolPointer, other.classOrObjectSymbolPointer)
|
||||
return compareSymbolPointers(classOrObjectSymbolPointer, other.classOrObjectSymbolPointer)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int = classOrObjectDeclaration.hashCode()
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ internal class SymbolLightFieldForObject private constructor(
|
||||
}
|
||||
|
||||
return other.containingClass == containingClass &&
|
||||
compareSymbolPointers(ktModule, other.objectSymbolPointer, objectSymbolPointer)
|
||||
compareSymbolPointers(other.objectSymbolPointer, objectSymbolPointer)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
||||
|
||||
+1
-1
@@ -193,7 +193,7 @@ internal class SymbolLightFieldForProperty private constructor(
|
||||
}
|
||||
|
||||
return containingClass == other.containingClass &&
|
||||
compareSymbolPointers(ktModule, propertySymbolPointer, other.propertySymbolPointer)
|
||||
compareSymbolPointers(propertySymbolPointer, other.propertySymbolPointer)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int = kotlinOrigin?.hashCode() ?: fieldName.hashCode()
|
||||
|
||||
+1
-1
@@ -258,7 +258,7 @@ internal class SymbolLightAccessorMethod private constructor(
|
||||
return containingPropertyDeclaration == other.containingPropertyDeclaration
|
||||
}
|
||||
|
||||
return compareSymbolPointers(ktModule, propertyAccessorSymbolPointer, other.propertyAccessorSymbolPointer)
|
||||
return compareSymbolPointers(propertyAccessorSymbolPointer, other.propertyAccessorSymbolPointer)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int = propertyAccessorDeclaration?.hashCode() ?: containingPropertyDeclaration.hashCode()
|
||||
|
||||
+1
-1
@@ -150,7 +150,7 @@ internal abstract class SymbolLightMethod<FType : KtFunctionLikeSymbol> private
|
||||
}
|
||||
|
||||
return containingClass == other.containingClass &&
|
||||
compareSymbolPointers(ktModule, functionSymbolPointer, other.functionSymbolPointer)
|
||||
compareSymbolPointers(functionSymbolPointer, other.functionSymbolPointer)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
||||
|
||||
+1
-1
@@ -96,7 +96,7 @@ internal abstract class SymbolLightParameterCommon(
|
||||
return parameterDeclaration == other.parameterDeclaration
|
||||
}
|
||||
|
||||
return compareSymbolPointers(ktModule, parameterSymbolPointer, other.parameterSymbolPointer)
|
||||
return compareSymbolPointers(parameterSymbolPointer, other.parameterSymbolPointer)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int = parameterDeclaration?.hashCode() ?: _name.hashCode()
|
||||
|
||||
+1
-1
@@ -94,7 +94,7 @@ internal class SymbolLightParameterForReceiver private constructor(
|
||||
override fun equals(other: Any?): Boolean = this === other ||
|
||||
other is SymbolLightParameterForReceiver &&
|
||||
ktModule == other.ktModule &&
|
||||
compareSymbolPointers(ktModule, receiverPointer, other.receiverPointer)
|
||||
compareSymbolPointers(receiverPointer, other.receiverPointer)
|
||||
|
||||
override fun hashCode(): Int = _name.hashCode()
|
||||
|
||||
|
||||
+1
-1
@@ -181,7 +181,7 @@ internal class SymbolLightTypeParameter private constructor(
|
||||
}
|
||||
|
||||
return other.kotlinOrigin == kotlinOrigin &&
|
||||
compareSymbolPointers(ktModule, typeParameterSymbolPointer, other.typeParameterSymbolPointer) &&
|
||||
compareSymbolPointers(typeParameterSymbolPointer, other.typeParameterSymbolPointer) &&
|
||||
other.parent == parent
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ internal class SymbolLightTypeParameterList(
|
||||
return other.ktDeclaration == ktDeclaration
|
||||
}
|
||||
|
||||
return other.owner == owner && compareSymbolPointers(ktModule, symbolWithTypeParameterPointer, other.symbolWithTypeParameterPointer)
|
||||
return other.owner == owner && compareSymbolPointers(symbolWithTypeParameterPointer, other.symbolWithTypeParameterPointer)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int = ktDeclaration.hashCode() + 1
|
||||
|
||||
+5
-6
@@ -252,12 +252,11 @@ internal fun KtSymbolPointer<*>.isValid(ktModule: KtModule): Boolean = analyzeFo
|
||||
restoreSymbol() != null
|
||||
}
|
||||
|
||||
internal fun <T : KtSymbol> compareSymbolPointers(ktModule: KtModule, left: KtSymbolPointer<T>, right: KtSymbolPointer<T>): Boolean {
|
||||
return left === right || analyzeForLightClasses(ktModule) {
|
||||
val leftSymbol = left.restoreSymbol()
|
||||
leftSymbol != null && leftSymbol == right.restoreSymbol()
|
||||
}
|
||||
}
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
internal inline fun <T : KtSymbol> compareSymbolPointers(
|
||||
left: KtSymbolPointer<T>,
|
||||
right: KtSymbolPointer<T>,
|
||||
): Boolean = left.pointsToTheSameSymbolAs(right)
|
||||
|
||||
internal inline fun <T : KtSymbol, R> KtSymbolPointer<T>.withSymbol(
|
||||
ktModule: KtModule,
|
||||
|
||||
Reference in New Issue
Block a user