Exclude rangeUntil operation from constant evaluation and interpretation #KT-52933
This commit is contained in:
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.utils.Printer
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
val DEST_FILE: File = File("compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt")
|
val DEST_FILE: File = File("compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt")
|
||||||
private val EXCLUDED_FUNCTIONS: List<String> = listOf("rangeTo", "hashCode", "inc", "dec", "subSequence")
|
private val EXCLUDED_FUNCTIONS: List<String> = listOf("rangeTo", "rangeUntil", "hashCode", "inc", "dec", "subSequence")
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
GeneratorsFileUtil.writeFileIfContentChanged(DEST_FILE, generate())
|
GeneratorsFileUtil.writeFileIfContentChanged(DEST_FILE, generate())
|
||||||
|
|||||||
@@ -204,10 +204,13 @@ private fun getOperationMap(argumentsCount: Int): MutableList<Operation> {
|
|||||||
return !isPrimitive && isFakeOverridden
|
return !isPrimitive && isFakeOverridden
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val excludedBinaryOperations = listOf("rangeUntil").map { Name.identifier(it) }
|
||||||
|
|
||||||
for (classDescriptor in allPrimitiveTypes + additionalBuiltIns + arrays) {
|
for (classDescriptor in allPrimitiveTypes + additionalBuiltIns + arrays) {
|
||||||
val compileTimeFunctions = classDescriptor.unsubstitutedMemberScope.getContributedDescriptors()
|
val compileTimeFunctions = classDescriptor.unsubstitutedMemberScope.getContributedDescriptors()
|
||||||
.filterIsInstance<CallableDescriptor>()
|
.filterIsInstance<CallableDescriptor>()
|
||||||
.filter { !it.isFakeOverride(classDescriptor) && it.valueParameters.size + 1 == argumentsCount }
|
.filter { !it.isFakeOverride(classDescriptor) && it.valueParameters.size + 1 == argumentsCount }
|
||||||
|
.filter { it.name !in excludedBinaryOperations }
|
||||||
|
|
||||||
for (function in compileTimeFunctions) {
|
for (function in compileTimeFunctions) {
|
||||||
operationMap.add(
|
operationMap.add(
|
||||||
|
|||||||
Reference in New Issue
Block a user