IR: use toLowerCaseAsciiOnly

This commit is contained in:
Georgy Bronnikov
2019-10-01 09:40:34 +03:00
parent a68090db5a
commit 7e9cfbc91a
7 changed files with 17 additions and 19 deletions
@@ -26,12 +26,12 @@ import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
import org.jetbrains.kotlin.ir.util.getPackageFragment
import org.jetbrains.kotlin.ir.util.referenceFunction
import org.jetbrains.kotlin.ir.util.toLowerCase
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.calls.components.isVararg
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.util.OperatorNameConventions
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
// This is what Context collects about IR.
abstract class Ir<out T : CommonBackendContext>(val context: T, val irModule: IrModuleFragment) {
@@ -128,7 +128,7 @@ abstract class Symbols<out T : CommonBackendContext>(val context: T, private val
}
val primitiveArrayOfByType = PrimitiveType.values().associate { type ->
val function = getSimpleFunction(Name.identifier(type.name.toLowerCase() + "ArrayOf")) {
val function = getSimpleFunction(Name.identifier(type.name.toLowerCaseAsciiOnly() + "ArrayOf")) {
it.extensionReceiverParameter == null && it.dispatchReceiverParameter == null && it.valueParameters.size == 1 &&
it.valueParameters[0].isVararg
}
@@ -9,11 +9,11 @@ import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.util.dump
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
import org.jetbrains.kotlin.ir.util.toLowerCase
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import java.io.File
private val IrElement.elementName: String
@@ -53,7 +53,7 @@ fun <Data, Context> makeVerifyAction(verifier: (Context, Data) -> Unit): Action<
}
fun dumpIrElement(actionState: ActionState, data: IrElement, context: Any?): String {
val beforeOrAfterStr = actionState.beforeOrAfter.name.toLowerCase()
val beforeOrAfterStr = actionState.beforeOrAfter.name.toLowerCaseAsciiOnly()
var dumpText: String = ""
val elementName: String
@@ -21,11 +21,11 @@ import org.jetbrains.kotlin.ir.types.isLong
import org.jetbrains.kotlin.ir.util.constructors
import org.jetbrains.kotlin.ir.util.findDeclaration
import org.jetbrains.kotlin.ir.util.kotlinPackageFqn
import org.jetbrains.kotlin.ir.util.toLowerCase
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi2ir.findSingleFunction
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import java.util.*
class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendContext) {
@@ -220,7 +220,7 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC
val jsArrayIteratorFunction = getInternalFunction("arrayIterator")
val jsPrimitiveArrayIteratorFunctions =
PrimitiveType.values().associate { it to getInternalFunction("${it.typeName.asString().toLowerCase()}ArrayIterator") }
PrimitiveType.values().associate { it to getInternalFunction("${it.typeName.asString().toLowerCaseAsciiOnly()}ArrayIterator") }
val arrayLiteral = unOp("arrayLiteral")
@@ -237,15 +237,15 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC
val primitiveToSizeConstructor =
PrimitiveType.values().associate { type ->
type to (primitiveToTypedArrayMap[type]?.let {
unOp("${it.toLowerCase()}Array")
} ?: getInternalFunction("${type.typeName.asString().toLowerCase()}Array"))
unOp("${it.toLowerCaseAsciiOnly()}Array")
} ?: getInternalFunction("${type.typeName.asString().toLowerCaseAsciiOnly()}Array"))
}
val primitiveToLiteralConstructor =
PrimitiveType.values().associate { type ->
type to (primitiveToTypedArrayMap[type]?.let {
unOp("${it.toLowerCase()}ArrayOf")
} ?: getInternalFunction("${type.typeName.asString().toLowerCase()}ArrayOf"))
unOp("${it.toLowerCaseAsciiOnly()}ArrayOf")
} ?: getInternalFunction("${type.typeName.asString().toLowerCaseAsciiOnly()}ArrayOf"))
}
val arrayConcat = getInternalWithoutPackage("arrayConcat")
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.declarations.IrPackageFragment
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
val varargPhase = makeIrFilePhase(
::VarargLowering,
@@ -97,7 +98,7 @@ private class VarargLowering(val context: JvmBackendContext) : FileLoweringPass,
companion object {
private val PRIMITIVE_ARRAY_OF_NAMES: Set<String> =
(PrimitiveType.values().map { type -> type.name } + UnsignedType.values().map { type -> type.typeName.asString() })
.map { name -> name.toLowerCase() + "ArrayOf" }.toSet()
.map { name -> name.toLowerCaseAsciiOnly() + "ArrayOf" }.toSet()
private val IrFunction.isPrimitiveArrayOf: Boolean
get() {
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.backend.wasm.ast
import org.jetbrains.kotlin.ir.util.toLowerCase
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
// TODO: Abstract out S-expression part of dumping?
@@ -16,7 +16,7 @@ fun WasmImmediate.toWat(): String = when (this) {
WasmImmediate.None -> ""
is WasmImmediate.DeclarationReference -> " $$name"
// SpiderMonkey jsshell won't parse Uppercase letters in literals
is WasmImmediate.LiteralValue<*> -> " $value".toLowerCase()
is WasmImmediate.LiteralValue<*> -> " $value".toLowerCaseAsciiOnly()
}
fun wasmModuleToWat(module: WasmModule): String =
@@ -615,7 +615,3 @@ val IrFunctionReference.typeSubstitutionMap: Map<IrTypeParameterSymbol, IrType>
val IrFunctionAccessExpression.typeSubstitutionMap: Map<IrTypeParameterSymbol, IrType>
get() = getTypeSubstitutionMap(symbol.owner)
// Perhaps move to some even more general utilities?
fun String.toLowerCase() = toLowerCase(Locale.ROOT)
fun String.toUpperCase() = toUpperCase(Locale.ROOT)
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import org.jetbrains.kotlin.utils.addIfNotNull
fun IrElement.render() =
@@ -206,7 +207,7 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
append(' ')
if (declaration is IrSimpleFunction) {
append(declaration.modality.toString().toLowerCase())
append(declaration.modality.toString().toLowerCaseAsciiOnly())
append(' ')
}
@@ -262,7 +263,7 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
buildTrimEnd {
append(declaration.visibility)
append(' ')
append(declaration.modality.toString().toLowerCase())
append(declaration.modality.toString().toLowerCaseAsciiOnly())
append(' ')
append(declaration.name.asString())