diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt index e0fc64a147d..ed38bea2a31 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.name.parentOrNull import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol import org.jetbrains.kotlin.serialization.deserialization.getClassId import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import java.io.DataInput import java.io.DataOutput import java.io.File @@ -326,7 +327,7 @@ private class ProtoDataProvider(private val serializerProtocol: SerializerExtens proto.`package`.apply { val packageNameId = getExtensionOrNull(serializerProtocol.packageFqName) val packageFqName = packageNameId?.let { FqName(nameResolver.getPackageFqName(it)) } ?: FqName.ROOT - val packagePartClassId = ClassId(packageFqName, Name.identifier(sourceFile.nameWithoutExtension.capitalize() + "Kt")) + val packagePartClassId = ClassId(packageFqName, Name.identifier(sourceFile.nameWithoutExtension.capitalizeAsciiOnly() + "Kt")) classes[packagePartClassId] = PackagePartProtoData(this, nameResolver, packageFqName) } @@ -347,7 +348,7 @@ fun getProtoData(sourceFile: File, metadata: ByteArray): Map proto.`package`.apply { val packageFqName = getExtensionOrNull(JsProtoBuf.packageFqName)?.let(nameResolver::getPackageFqName)?.let(::FqName) ?: FqName.ROOT - val packagePartClassId = ClassId(packageFqName, Name.identifier(sourceFile.nameWithoutExtension.capitalize() + "Kt")) + val packagePartClassId = ClassId(packageFqName, Name.identifier(sourceFile.nameWithoutExtension.capitalizeAsciiOnly() + "Kt")) classes[packagePartClassId] = PackagePartProtoData(this, nameResolver, packageFqName) } @@ -412,4 +413,4 @@ private class PackageMetadataMap(storageFile: File) : BasicStringMap( operator fun get(packageName: String) = storage[packageName] override fun dumpValue(value: ByteArray): String = "Package metadata: ${value.md5()}" -} \ No newline at end of file +} diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/intrinsics/IntrinsicMethods.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/intrinsics/IntrinsicMethods.java index 8feb66f79ab..6742e3763c9 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/intrinsics/IntrinsicMethods.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/intrinsics/IntrinsicMethods.java @@ -17,11 +17,10 @@ package org.jetbrains.kotlin.codegen.intrinsics; import com.google.common.collect.ImmutableList; -import kotlin.text.StringsKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.builtins.StandardNames; import org.jetbrains.kotlin.builtins.PrimitiveType; +import org.jetbrains.kotlin.builtins.StandardNames; import org.jetbrains.kotlin.codegen.AsmUtil; import org.jetbrains.kotlin.config.JvmTarget; import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor; @@ -30,6 +29,7 @@ import org.jetbrains.kotlin.name.FqNameUnsafe; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType; import org.jetbrains.kotlin.types.expressions.OperatorConventions; +import org.jetbrains.kotlin.util.capitalizeDecapitalize.CapitalizeDecapitalizeKt; import org.jetbrains.org.objectweb.asm.Type; import static org.jetbrains.kotlin.builtins.StandardNames.*; @@ -122,7 +122,9 @@ public class IntrinsicMethods { declareIntrinsicFunction(typeFqName, "toString", 0, TO_STRING); intrinsicsMap.registerIntrinsic( - BUILT_INS_PACKAGE_FQ_NAME, null, StringsKt.decapitalize(type.getArrayTypeName().asString()) + "Of", 1, new ArrayOf() + BUILT_INS_PACKAGE_FQ_NAME, null, + CapitalizeDecapitalizeKt.decapitalizeAsciiOnly(type.getArrayTypeName().asString()) + "Of", + 1, new ArrayOf() ); } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/PlainTextMessageRenderer.java b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/PlainTextMessageRenderer.java index d0f073c4ddd..8f8c9a052cd 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/PlainTextMessageRenderer.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/PlainTextMessageRenderer.java @@ -23,6 +23,7 @@ import org.fusesource.jansi.Ansi; import org.fusesource.jansi.internal.CLibrary; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.util.capitalizeDecapitalize.CapitalizeDecapitalizeKt; import java.util.EnumSet; import java.util.Set; @@ -130,7 +131,7 @@ public abstract class PlainTextMessageRenderer implements MessageRenderer { return message; } - return StringsKt.decapitalize(message); + return CapitalizeDecapitalizeKt.decapitalizeAsciiOnly(message); } @NotNull diff --git a/compiler/compiler-runner/src/org/jetbrains/kotlin/compilerRunner/CompilerOutputParser.kt b/compiler/compiler-runner/src/org/jetbrains/kotlin/compilerRunner/CompilerOutputParser.kt index 191634200e9..1cbdd931c35 100644 --- a/compiler/compiler-runner/src/org/jetbrains/kotlin/compilerRunner/CompilerOutputParser.kt +++ b/compiler/compiler-runner/src/org/jetbrains/kotlin/compilerRunner/CompilerOutputParser.kt @@ -30,6 +30,7 @@ import org.xml.sax.SAXException import org.xml.sax.helpers.DefaultHandler import java.io.IOException import java.io.Reader +import java.util.* import javax.xml.parsers.SAXParserFactory object CompilerOutputParser { @@ -124,7 +125,7 @@ object CompilerOutputParser { // We're directly inside the root tag: return } - val qNameLowerCase = qName.toLowerCase() + val qNameLowerCase = qName.toLowerCase(Locale.US) var category: CompilerMessageSeverity? = CATEGORIES[qNameLowerCase] if (category == null) { messageCollector.report(ERROR, "Unknown compiler message tag: $qName") diff --git a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/FileSystemUtils.kt b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/FileSystemUtils.kt index 85ced4e0299..bd2f3bc400f 100644 --- a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/FileSystemUtils.kt +++ b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/FileSystemUtils.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.daemon.common +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import java.io.File enum class OSKind { @@ -25,7 +26,7 @@ enum class OSKind { Unknown; companion object { - val current: OSKind = System.getProperty("os.name").toLowerCase().let { + val current: OSKind = System.getProperty("os.name").toLowerCaseAsciiOnly().let { when { // partly taken from http://www.code4copy.com/java/post/detecting-os-type-in-java it.startsWith("windows") -> Windows diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt index 379af1ea5d0..32f7ebd5eb6 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty open class FirJvmMangleComputer( @@ -210,7 +211,7 @@ open class FirJvmMangleComputer( is ConeStarProjection -> appendSignature(MangleConstant.STAR_MARK) is ConeKotlinTypeProjection -> { if (arg.kind != ProjectionKind.INVARIANT) { - appendSignature(arg.kind.name.toLowerCase()) + appendSignature(arg.kind.name.toLowerCaseAsciiOnly()) appendSignature(MangleConstant.VARIANCE_SEPARATOR) } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt index 34590214bac..6233ffd1959 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt @@ -47,6 +47,7 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.Variance.* +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.kotlin.utils.addToStdlib.runIf import java.lang.Deprecated import java.lang.annotation.Documented @@ -140,7 +141,7 @@ internal fun JavaType?.toConeKotlinTypeWithoutEnhancement( val primitiveType = type val kotlinPrimitiveName = when (val javaName = primitiveType?.typeName?.asString()) { null -> "Unit" - else -> javaName.capitalize() + else -> javaName.capitalizeAsciiOnly() } val classId = StandardClassIds.byName(kotlinPrimitiveName) @@ -194,7 +195,7 @@ private fun JavaArrayType.toConeKotlinTypeWithoutEnhancement( ) } } else { - val javaComponentName = componentType.type?.typeName?.asString()?.capitalize() ?: error("Array of voids") + val javaComponentName = componentType.type?.typeName?.asString()?.capitalizeAsciiOnly() ?: error("Array of voids") val classId = StandardClassIds.byName(javaComponentName + "Array") if (forAnnotationValueParameter) { diff --git a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/FirJavaSyntheticNamesProvider.kt b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/FirJavaSyntheticNamesProvider.kt index 4071a0932dd..b25132646f7 100644 --- a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/FirJavaSyntheticNamesProvider.kt +++ b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/FirJavaSyntheticNamesProvider.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.NoMutableState import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticNamesProvider import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly +import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeAsciiOnly import org.jetbrains.kotlin.util.capitalizeDecapitalize.toUpperCaseAsciiOnly @NoMutableState @@ -91,7 +92,7 @@ object FirJavaSyntheticNamesProvider : FirSyntheticNamesProvider() { else -> return emptyList() } val withoutPrefix = identifier.removePrefix(prefix) - val withoutPrefixName = Name.identifier(withoutPrefix.decapitalize()) + val withoutPrefixName = Name.identifier(withoutPrefix.decapitalizeAsciiOnly()) return if (prefix == SETTER_PREFIX) { listOf(withoutPrefixName, Name.identifier(IS_PREFIX + withoutPrefix)) } else { @@ -99,4 +100,3 @@ object FirJavaSyntheticNamesProvider : FirSyntheticNamesProvider() { } } } - diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index 52db4dc41f5..9223ab2c694 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.types.Variance +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.addToStdlib.safeAs @@ -226,7 +227,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM } private fun FirMemberDeclaration.modalityAsString(): String { - return modality?.name?.toLowerCase() ?: run { + return modality?.name?.toLowerCaseAsciiOnly() ?: run { if (this is FirCallableMemberDeclaration<*> && this.isOverride) { "open?" } else { @@ -343,7 +344,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM declaration.renderPhaseIfNeeded() print( when (declaration) { - is FirRegularClass -> declaration.classKind.name.toLowerCase().replace("_", " ") + is FirRegularClass -> declaration.classKind.name.toLowerCaseAsciiOnly().replace("_", " ") is FirTypeAlias -> "typealias" is FirSimpleFunction -> "fun" is FirProperty -> { diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/Utils.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/Utils.kt index 1e0fa463421..452fdd9bd55 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/Utils.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/Utils.kt @@ -7,18 +7,22 @@ package org.jetbrains.kotlin.ir.interpreter import org.jetbrains.kotlin.builtins.StandardNames import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.ir.interpreter.builtins.evaluateIntrinsicAnnotation -import org.jetbrains.kotlin.ir.interpreter.stack.Variable -import org.jetbrains.kotlin.ir.interpreter.state.* import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl -import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.ir.interpreter.builtins.evaluateIntrinsicAnnotation +import org.jetbrains.kotlin.ir.interpreter.stack.Variable +import org.jetbrains.kotlin.ir.interpreter.state.* +import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol +import org.jetbrains.kotlin.ir.symbols.IrSymbol +import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol +import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.kotlin.utils.addToStdlib.safeAs internal fun IrFunction.getDispatchReceiver(): IrValueParameterSymbol? = this.dispatchReceiverParameter?.symbol @@ -202,7 +206,7 @@ internal fun State?.getCorrectReceiverByFunction(irFunction: IrFunction): State? return generateSequence(original) { it.superClass }.firstOrNull { it.irClass.thisReceiver == other } ?: this } -internal fun IrFunction.getCapitalizedFileName() = this.file.name.replace(".kt", "Kt").capitalize() +internal fun IrFunction.getCapitalizedFileName() = this.file.name.replace(".kt", "Kt").capitalizeAsciiOnly() internal fun IrType.isUnsigned() = this.isUByte() || this.isUShort() || this.isUInt() || this.isULong() diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Wrapper.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Wrapper.kt index 4af15568285..4baf6203cb4 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Wrapper.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Wrapper.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable import org.jetbrains.kotlin.ir.util.parentAsClass +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import java.lang.invoke.MethodHandle import java.lang.invoke.MethodHandles import java.lang.invoke.MethodType @@ -30,7 +31,7 @@ internal class Wrapper(val value: Any, override val irClass: IrClass) : Complex( if (irFunction.getEvaluateIntrinsicValue()?.isEmpty() == true) return null // this method will handle IntrinsicEvaluator // if function is actually a getter, then use "get${property.name.capitalize()}" as method name val propertyName = (irFunction as? IrSimpleFunction)?.correspondingPropertySymbol?.owner?.name?.asString() - val propertyCall = listOfNotNull(propertyName, "get${propertyName?.capitalize()}") + val propertyCall = listOfNotNull(propertyName, "get${propertyName?.capitalizeAsciiOnly()}") .firstOrNull { receiverClass.methods.any { method -> method.name == it } } val intrinsicName = getJavaOriginalName(irFunction) @@ -187,4 +188,4 @@ internal class Wrapper(val value: Any, override val irClass: IrClass) : Complex( override fun toString(): String { return "Wrapper(obj='$typeFqName', value=$value)" } -} \ No newline at end of file +} diff --git a/compiler/psi/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt b/compiler/psi/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt index 9f99a2e4c0e..a3117b36865 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/kdoc/parser/KDocKnownTag.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.kdoc.parser +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toUpperCaseAsciiOnly + enum class KDocKnownTag(val isReferenceRequired: Boolean, val isSectionStart: Boolean) { AUTHOR(false, false), THROWS(true, false), @@ -37,7 +39,7 @@ enum class KDocKnownTag(val isReferenceRequired: Boolean, val isSectionStart: Bo tagName.subSequence(1, tagName.length) } else tagName try { - return valueOf(name.toString().toUpperCase()) + return valueOf(name.toString().toUpperCaseAsciiOnly()) } catch (ignored: IllegalArgumentException) { } diff --git a/compiler/psi/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocImpl.kt b/compiler/psi/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocImpl.kt index 43c5480fe8c..ea061c747de 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocImpl.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/kdoc/psi/impl/KDocImpl.kt @@ -10,13 +10,14 @@ import com.intellij.psi.impl.source.tree.LazyParseablePsiElement import com.intellij.psi.tree.IElementType import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.kdoc.lexer.KDocTokens +import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag import org.jetbrains.kotlin.kdoc.psi.api.KDoc import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.KtDeclaration -import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.psiUtil.getChildOfType import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType -import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag +import org.jetbrains.kotlin.psi.psiUtil.getParentOfType +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly class KDocImpl(buffer: CharSequence?) : LazyParseablePsiElement(KDocTokens.KDOC, buffer), KDoc { @@ -37,10 +38,10 @@ class KDocImpl(buffer: CharSequence?) : LazyParseablePsiElement(KDocTokens.KDOC, getChildrenOfType().firstOrNull { it.name == name } override fun findSectionByTag(tag: KDocKnownTag): KDocSection? = - findSectionByName(tag.name.toLowerCase()) + findSectionByName(tag.name.toLowerCaseAsciiOnly()) override fun findSectionByTag(tag: KDocKnownTag, subjectName: String): KDocSection? = getChildrenOfType().firstOrNull { - it.name == tag.name.toLowerCase() && it.getSubjectName() == subjectName + it.name == tag.name.toLowerCaseAsciiOnly() && it.getSubjectName() == subjectName } } diff --git a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt index 2dfee53961c..f2e5e700d34 100644 --- a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt +++ b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly private typealias Stack = MutableList>> @@ -452,7 +453,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { resolvedQualifier.symbol?.let { val fir = it.fir if (fir is FirClass) { - data.append(fir.classKind.name.toLowerCase()).append(" ") + data.append(fir.classKind.name.toLowerCaseAsciiOnly()).append(" ") data.append((fir as? FirRegularClass)?.name ?: Name.special("")) if (fir.superTypeRefs.any { it.render() != "kotlin/Any" }) { data.append(": ") diff --git a/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt b/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt index 006bf819be8..8b8bfdbc718 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt @@ -16,16 +16,18 @@ package org.jetbrains.kotlin.descriptors.annotations +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly + enum class AnnotationUseSiteTarget(renderName: String? = null) { - FIELD(), - FILE(), - PROPERTY(), + FIELD, + FILE, + PROPERTY, PROPERTY_GETTER("get"), PROPERTY_SETTER("set"), - RECEIVER(), + RECEIVER, CONSTRUCTOR_PARAMETER("param"), SETTER_PARAMETER("setparam"), PROPERTY_DELEGATE_FIELD("delegate"); - val renderName: String = renderName ?: name.toLowerCase() + val renderName: String = renderName ?: name.toLowerCaseAsciiOnly() } diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt index ba2c2b3a831..4af442dac9c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/ReflectionTypes.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.types.* +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import kotlin.reflect.KProperty class ReflectionTypes(module: ModuleDescriptor, private val notFoundClasses: NotFoundClasses) { @@ -35,7 +36,7 @@ class ReflectionTypes(module: ModuleDescriptor, private val notFoundClasses: Not private class ClassLookup(val numberOfTypeParameters: Int) { operator fun getValue(types: ReflectionTypes, property: KProperty<*>): ClassDescriptor { - return types.find(property.name.capitalize(), numberOfTypeParameters) + return types.find(property.name.capitalizeAsciiOnly(), numberOfTypeParameters) } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index a37436911e8..52ba6d26cde 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.declaresOrInheritsDefaultValu import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.ErrorUtils.UninferredParameterTypeConstructor import org.jetbrains.kotlin.types.TypeUtils.CANT_INFER_FUNCTION_PARAM_TYPE +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import java.util.* internal class DescriptorRendererImpl( @@ -494,7 +495,7 @@ internal class DescriptorRendererImpl( private fun renderModality(modality: Modality, builder: StringBuilder, defaultModality: Modality) { if (!renderDefaultModality && modality == defaultModality) return - renderModifier(builder, DescriptorRendererModifier.MODALITY in modifiers, modality.name.toLowerCase()) + renderModifier(builder, DescriptorRendererModifier.MODALITY in modifiers, modality.name.toLowerCaseAsciiOnly()) } private fun MemberDescriptor.implicitModalityWithoutExtensions(): Modality { @@ -538,7 +539,7 @@ internal class DescriptorRendererImpl( private fun renderMemberKind(callableMember: CallableMemberDescriptor, builder: StringBuilder) { if (DescriptorRendererModifier.MEMBER_KIND !in modifiers) return if (verbose && callableMember.kind != CallableMemberDescriptor.Kind.DECLARATION) { - builder.append("/*").append(callableMember.kind.name.toLowerCase()).append("*/ ") + builder.append("/*").append(callableMember.kind.name.toLowerCaseAsciiOnly()).append("*/ ") } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt index be3e43859bc..ff2a78b2658 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KDocCompletionContributor.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.utils.collectDescriptorsFiltered +import java.util.* class KDocCompletionContributor : CompletionContributor() { init { @@ -157,7 +158,7 @@ object KDocTagCompletionProvider : CompletionProvider() { val resultWithPrefix = result.withPrefixMatcher(prefix) KDocKnownTag.values().forEach { if (kdocOwner == null || it.isApplicable(kdocOwner)) { - resultWithPrefix.addElement(LookupElementBuilder.create("@" + it.name.toLowerCase())) + resultWithPrefix.addElement(LookupElementBuilder.create("@" + it.name.toLowerCase(Locale.US))) } } } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/VariableOrParameterNameWithTypeCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/VariableOrParameterNameWithTypeCompletion.kt index d206a8109fa..168b07042da 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/VariableOrParameterNameWithTypeCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/VariableOrParameterNameWithTypeCompletion.kt @@ -24,7 +24,6 @@ import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.util.Key import com.intellij.psi.PsiClass import com.intellij.psi.PsiElement -import com.intellij.psi.codeStyle.CodeStyleSettingsManager import com.intellij.psi.codeStyle.NameUtil import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -69,7 +68,7 @@ class VariableOrParameterNameWithTypeCompletion( prefixWords.indices.map { index -> if (index == 0) prefix else prefixWords.drop(index).joinToString("") } userPrefixes = nameSuggestionPrefixes.indices.map { prefixWords.take(it).joinToString("") } - classNamePrefixMatchers = nameSuggestionPrefixes.map { CamelHumpMatcher(it.capitalize(), false) } + classNamePrefixMatchers = nameSuggestionPrefixes.map { CamelHumpMatcher(it.capitalize(Locale.US), false) } } private val suggestionsByTypesAdded = HashSet() @@ -281,4 +280,4 @@ class VariableOrParameterNameWithTypeCompletion( object Weigher : LookupElementWeigher("kotlin.parameterNameAndTypePriority") { override fun weigh(element: LookupElement, context: WeighingContext): Int = element.getUserData(PRIORITY_KEY) ?: 0 } -} \ No newline at end of file +} diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt index 69bf8db6270..c55ded190d1 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt @@ -164,7 +164,7 @@ object KotlinNameSuggester { val argText = typeArguments.joinToString(separator = "") { it.typeReference?.typeElement?.render() ?: "" } "$argText${referenceExpression?.text ?: ""}" } - else -> text.capitalize() + else -> text.capitalizeAsciiOnly() } } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/KotlinMPPGradleTestTasksProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/KotlinMPPGradleTestTasksProvider.kt index 0cd104807b2..ac6460a7d3f 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/KotlinMPPGradleTestTasksProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/KotlinMPPGradleTestTasksProvider.kt @@ -13,6 +13,7 @@ import com.intellij.openapi.module.Module import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider import org.jetbrains.kotlin.idea.caches.project.isMPPModule import org.jetbrains.kotlin.idea.configuration.KotlinTargetData +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.plugins.gradle.execution.test.runner.GradleTestTasksProvider import org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil import org.jetbrains.plugins.gradle.util.GradleConstants @@ -57,6 +58,6 @@ class KotlinMPPGradleTestTasksProvider : GradleTestTasksProvider { private fun getTaskNames(task: TaskData, namePrefix: String): List { val name = task.name - return listOf(namePrefix + CLEAN_NAME_PREFIX + name.capitalize(), namePrefix + name) + return listOf(namePrefix + CLEAN_NAME_PREFIX + name.capitalizeAsciiOnly(), namePrefix + name) } -} \ No newline at end of file +} diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/MultiplatformTestTasksChooser.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/MultiplatformTestTasksChooser.kt index d9ef2548885..cc908fdc66b 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/MultiplatformTestTasksChooser.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/MultiplatformTestTasksChooser.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.config.ExternalSystemRunTask import org.jetbrains.kotlin.config.ExternalSystemTestRunTask import org.jetbrains.kotlin.idea.facet.externalSystemTestRunTasks import org.jetbrains.kotlin.idea.util.module +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.plugins.gradle.execution.test.runner.* import org.jetbrains.plugins.gradle.util.TasksToRun import java.util.* @@ -56,7 +57,7 @@ class MultiplatformTestTasksChooser : TestTasksChooser() { return { it.targetName == targetName } } - val taskPrefix = targetName + parts[1].capitalize() + val taskPrefix = targetName + parts[1].capitalizeAsciiOnly() return { it.targetName == targetName && it.taskName.startsWith(taskPrefix) } } @@ -119,9 +120,9 @@ class MultiplatformTestTasksChooser : TestTasksChooser() { } private fun getTaskNames(task: ExternalSystemRunTask): List { - return listOf("clean" + task.taskName.capitalize(), task.taskName) + return listOf("clean" + task.taskName.capitalizeAsciiOnly(), task.taskName) } } private val ExternalSystemRunTask.presentableName: String - get() = targetName ?: (":$taskName") \ No newline at end of file + get() = targetName ?: (":$taskName") diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt index 685485da2c5..896915fecae 100644 --- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt +++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.config.TestSourceKotlinRootType import org.jetbrains.kotlin.idea.configuration.RepositoryDescription import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import org.jetbrains.kotlin.utils.SmartList import java.util.* @@ -116,7 +117,7 @@ class PomFile private constructor(private val xmlFile: XmlFile, val domModel: Ma dependency.classifier.stringValue = classifier if (scope != null && scope != MavenArtifactScope.COMPILE) { - dependency.scope.stringValue = scope.name.toLowerCase() + dependency.scope.stringValue = scope.name.toLowerCaseAsciiOnly() } if (optional) { @@ -635,7 +636,8 @@ internal fun MavenDomDependencies.findDependencies(artifacts: List, sco } private fun MavenDomDependency.matches(artifact: MavenId, scope: MavenArtifactScope?) = - this.matches(artifact) && (this.scope.stringValue == scope?.name?.toLowerCase() || scope == null && this.scope.stringValue == "compile") + this.matches(artifact) && + (this.scope.stringValue == scope?.name?.toLowerCaseAsciiOnly() || scope == null && this.scope.stringValue == "compile") private fun MavenDomArtifactCoordinates.matches(artifact: MavenId) = (artifact.groupId == null || groupId.stringValue == artifact.groupId) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt index dbc32b3351b..c906ed661b1 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep.FirstWizardS import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.runWithProgressBar import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.SecondStepWizardComponent import java.io.File +import java.util.* import javax.swing.JButton import javax.swing.JComponent import com.intellij.openapi.module.Module as IdeaModule @@ -217,7 +218,7 @@ class ModuleNewWizardFirstStep(wizard: IdeWizard) : WizardStep(wizard, Generatio private fun suggestGroupId(): String { val username = SystemProperties.getUserName() ?: return DEFAULT_GROUP_ID if (!username.matches("[\\w\\s]+".toRegex())) return DEFAULT_GROUP_ID - val usernameAsGroupId = username.trim().toLowerCase().split("\\s+".toRegex()).joinToString(separator = ".") + val usernameAsGroupId = username.trim().toLowerCase(Locale.US).split("\\s+".toRegex()).joinToString(separator = ".") return "me.$usernameAsGroupId" } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt index ae6b87b2e3d..0cdb7bbdc99 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.createPanelWithPopupHandler import org.jetbrains.kotlin.utils.addToStdlib.safeAs +import java.util.* import javax.swing.JComponent class ModulesEditorToolbarDecorator( @@ -72,7 +73,7 @@ class ModulesEditorToolbarDecorator( null -> "" } - text = KotlinNewProjectWizardUIBundle.message("editor.modules.add", moduleKindTextToAdd.capitalize()) + text = KotlinNewProjectWizardUIBundle.message("editor.modules.add", moduleKindTextToAdd.capitalize(Locale.US)) } event.presentation.isEnabled } @@ -103,7 +104,7 @@ class ModulesEditorToolbarDecorator( isEnabled = tree.selectedSettingItem is Module text = KotlinNewProjectWizardUIBundle.message( "editor.modules.remove.tooltip", - selectedModuleKindText?.let { " ${it.capitalize()}" }.orEmpty() + selectedModuleKindText?.let { " ${it.capitalize(Locale.US)}" }.orEmpty() ) } event.presentation.isEnabled diff --git a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt index 9642a20a218..ba5712cc09c 100644 --- a/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt +++ b/idea/jvm-debugger/jvm-debugger-util/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.varargParameterPosition import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.kotlin.utils.keysToMap import kotlin.jvm.internal.FunctionBase @@ -172,7 +173,7 @@ abstract class FileRankingCalculator(private val checkClassFqName: Boolean = tru return -MAJOR // boolean is - return if (methodName.drop(3) == propertyName.capitalize()) MAJOR else -NORMAL + return if (methodName.drop(3) == propertyName.capitalizeAsciiOnly()) MAJOR else -NORMAL } private fun rankingForVisibility(descriptor: DeclarationDescriptorWithVisibility, accessible: Accessible): Ranking { diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RecursivePropertyAccessorInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RecursivePropertyAccessorInspection.kt index 12fd0de43b2..0122a85353d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RecursivePropertyAccessorInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/RecursivePropertyAccessorInspection.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext.DECLARATION_TO_DESCRIPTOR import org.jetbrains.kotlin.resolve.BindingContext.REFERENCE_TARGET import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly class RecursivePropertyAccessorInspection : AbstractKotlinInspection() { @@ -98,7 +99,7 @@ class RecursivePropertyAccessorInspection : AbstractKotlinInspection() { if (element !is KtSimpleNameExpression) return false val namedFunction = element.getParentOfType(true) as? KtNamedFunction ?: return false val name = namedFunction.name ?: return false - val referencedName = element.text.capitalize() + val referencedName = element.text.capitalizeAsciiOnly() val isGetter = name == "get$referencedName" val isSetter = name == "set$referencedName" if (!isGetter && !isSetter) return false @@ -117,4 +118,4 @@ class RecursivePropertyAccessorInspection : AbstractKotlinInspection() { return (context[REFERENCE_TARGET, receiver] as? ClassDescriptor)?.kind == ClassKind.OBJECT } } -} \ No newline at end of file +} diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddArrayOfTypeFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddArrayOfTypeFix.kt index 592e3290826..577d34b88fe 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddArrayOfTypeFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddArrayOfTypeFix.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.createExpressionByPattern import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.types.KotlinType +import java.util.* class AddArrayOfTypeFix(expression: KtExpression, expectedType: KotlinType) : KotlinQuickFixAction(expression) { @@ -22,7 +23,7 @@ class AddArrayOfTypeFix(expression: KtExpression, expectedType: KotlinType) : Ko "arrayOf" } else { val typeName = DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(expectedType) - "${typeName.decapitalize()}Of" + "${typeName.decapitalize(Locale.US)}Of" } @@ -34,4 +35,4 @@ class AddArrayOfTypeFix(expression: KtExpression, expectedType: KotlinType) : Ko val arrayOfExpression = KtPsiFactory(project).createExpressionByPattern("$0($1)", prefix, element) element.replace(arrayOfExpression) } -} \ No newline at end of file +} diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt index abd0c6c57ed..3a65b2b679f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.cfg.pseudocodeTraverser.traverseFollowingInstruction import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor import org.jetbrains.kotlin.diagnostics.Errors +import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithContent import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade @@ -34,7 +35,6 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.NewDeclarationNameValidator import org.jetbrains.kotlin.idea.core.compareDescriptors -import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.refactoring.createTempCopy import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.AnalysisResult.ErrorMessage import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.AnalysisResult.Status @@ -56,6 +56,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny import org.jetbrains.kotlin.resolve.scopes.LexicalScope import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.typeUtil.makeNullable +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.kotlin.utils.DFS.* import java.util.* @@ -736,7 +737,7 @@ private fun ExtractionData.suggestFunctionNames(returnType: KotlinType): List val property = expr.getStrictParentOfType() if (property?.initializer == expr) { - property.name?.let { functionNames.add(KotlinNameSuggester.suggestNameByName("get" + it.capitalize(), validator)) } + property.name?.let { functionNames.add(KotlinNameSuggester.suggestNameByName("get" + it.capitalizeAsciiOnly(), validator)) } } } @@ -834,4 +835,4 @@ fun ExtractableCodeDescriptor.validate(target: ExtractionTarget = ExtractionTarg ) return ExtractableCodeDescriptorWithConflicts(this, conflicts) -} \ No newline at end of file +} diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodProcessor.kt index 68da4a46552..91b2b6b14b8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodProcessor.kt @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.descriptorUtil.isAncestorOf import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver import org.jetbrains.kotlin.resolve.scopes.utils.getImplicitReceiversHierarchy +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.kotlin.util.containingNonLocalDeclaration class MoveKotlinMethodProcessor( @@ -197,7 +198,7 @@ class MoveKotlinMethodProcessor( argumentExpression } else return } else { - val getterName = "get${targetVariable.nameAsSafeName.identifier.capitalize()}" + val getterName = "get${targetVariable.nameAsSafeName.identifier.capitalizeAsciiOnly()}" JavaPsiFacade.getElementFactory(myProject).createExpressionFromText("${oldReceiver.text}.$getterName()", null) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt index 7f51962462a..d80e8063ac9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -57,6 +57,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver import org.jetbrains.kotlin.types.expressions.DoubleColonLHS +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import org.jetbrains.kotlin.utils.addIfNotNull import java.io.File import java.lang.System.currentTimeMillis @@ -407,7 +408,7 @@ fun guessNewFileName(declarationsToMove: Collection): String val newFileName = representative?.run { if (containingKtFile.isScript()) "$name.kts" else "$name.${KotlinFileType.EXTENSION}" } ?: declarationsToMove.first().containingFile.name - return newFileName.capitalize() + return newFileName.capitalizeAsciiOnly() } // returns true if successful diff --git a/j2k/src/org/jetbrains/kotlin/j2k/ast/Expressions.kt b/j2k/src/org/jetbrains/kotlin/j2k/ast/Expressions.kt index 454679d4eca..84361f36e3e 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/ast/Expressions.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/ast/Expressions.kt @@ -22,6 +22,7 @@ import com.intellij.psi.tree.IElementType import org.jetbrains.kotlin.j2k.CodeBuilder import org.jetbrains.kotlin.j2k.append import org.jetbrains.kotlin.lexer.KtTokens +import java.util.* class ArrayAccessExpression(val expression: Expression, val index: Expression, val lvalue: Boolean) : Expression() { override fun generateCode(builder: CodeBuilder) { @@ -294,7 +295,7 @@ class ClassLiteralExpression(val type: Type): Expression() { fun createArrayInitializerExpression(arrayType: ArrayType, initializers: List, needExplicitType: Boolean = true) : MethodCallExpression { val elementType = arrayType.elementType val createArrayFunction = when { - elementType is PrimitiveType -> (elementType.toNotNullType().canonicalCode() + "ArrayOf").decapitalize() + elementType is PrimitiveType -> (elementType.toNotNullType().canonicalCode() + "ArrayOf").decapitalize(Locale.US) needExplicitType -> "arrayOf<" + arrayType.elementType.canonicalCode() + ">" else -> "arrayOf" } diff --git a/j2k/src/org/jetbrains/kotlin/j2k/usageProcessing/FieldToPropertyProcessing.kt b/j2k/src/org/jetbrains/kotlin/j2k/usageProcessing/FieldToPropertyProcessing.kt index 85111de12ee..c4962f7785e 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/usageProcessing/FieldToPropertyProcessing.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/usageProcessing/FieldToPropertyProcessing.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.j2k.AccessorKind import org.jetbrains.kotlin.j2k.CodeConverter import org.jetbrains.kotlin.j2k.ast.* import org.jetbrains.kotlin.j2k.dot +import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly class FieldToPropertyProcessing( private val field: PsiField, @@ -167,5 +168,5 @@ class UseAccessorsJavaCodeProcessor(private val factory: PsiElementFactory, priv } private fun accessorName(kind: AccessorKind) = - (if (kind == AccessorKind.GETTER) "get" else "set") + propertyName.capitalize() + (if (kind == AccessorKind.GETTER) "get" else "set") + propertyName.capitalizeAsciiOnly() } diff --git a/js/js.dce/src/org/jetbrains/kotlin/js/dce/util.kt b/js/js.dce/src/org/jetbrains/kotlin/js/dce/util.kt index 2beadabfaf4..f984ad4f411 100644 --- a/js/js.dce/src/org/jetbrains/kotlin/js/dce/util.kt +++ b/js/js.dce/src/org/jetbrains/kotlin/js/dce/util.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.js.backend.ast.* import org.jetbrains.kotlin.js.backend.ast.metadata.SpecialFunction import org.jetbrains.kotlin.js.backend.ast.metadata.specialFunction import org.jetbrains.kotlin.js.dce.Context.Node +import java.util.* fun Context.isObjectDefineProperty(function: JsExpression) = isObjectFunction(function, "defineProperty") @@ -46,7 +47,7 @@ fun Context.isObjectFunction(function: JsExpression, functionName: String): Bool fun Context.isKotlinFunction(function: JsExpression, name: String): Boolean { if (function !is JsNameRef || function.ident != name) return false val receiver = (function.qualifier as? JsNameRef)?.name ?: return false - return receiver in nodes && receiver.ident.toLowerCase() == "kotlin" + return receiver in nodes && receiver.ident.toLowerCase(Locale.US) == "kotlin" } fun isSpecialFunction(expr: JsExpression, specialFunction: SpecialFunction): Boolean = diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/config/ErrorTolerancePolicy.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/config/ErrorTolerancePolicy.kt index 2b6f18a5d12..c8e7bf657c5 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/config/ErrorTolerancePolicy.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/config/ErrorTolerancePolicy.kt @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.js.config +import java.util.* + enum class ErrorTolerancePolicy(val allowSyntaxErrors: Boolean, val allowSemanticErrors: Boolean) { NONE(false, false), SEMANTIC(false, true), @@ -16,7 +18,7 @@ enum class ErrorTolerancePolicy(val allowSyntaxErrors: Boolean, val allowSemanti val DEFAULT = NONE fun resolvePolicy(key: String): ErrorTolerancePolicy { - return when (key.toUpperCase()) { + return when (key.toUpperCase(Locale.US)) { "NONE" -> NONE "SEMANTIC" -> SEMANTIC "SYNTAX", "ALL" -> ALL @@ -24,4 +26,4 @@ enum class ErrorTolerancePolicy(val allowSyntaxErrors: Boolean, val allowSemanti } } } -} \ No newline at end of file +} diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/ArrayFIF.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/ArrayFIF.kt index 4d7c269d809..dad6b6bcbd6 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/ArrayFIF.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/ArrayFIF.kt @@ -109,7 +109,7 @@ object ArrayFIF : CompositeFIF() { } private val PrimitiveType.lowerCaseName - get() = typeName.asString().toLowerCase() + get() = typeName.asString().toLowerCase(Locale.US) fun getTag(descriptor: CallableDescriptor, config: JsConfig): String? { if (descriptor !is ConstructorDescriptor) return null diff --git a/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/directories.kt b/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/directories.kt index bacc11d1858..9e2ff344b97 100644 --- a/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/directories.kt +++ b/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/directories.kt @@ -39,7 +39,7 @@ class Directories( // compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/FileSystemUtils.kt // which in turn is based on: http://www.code4copy.com/java/post/detecting-os-type-in-java private val os: OSKind - get() = getProperty("os.name")?.toLowerCase().let { name -> + get() = getProperty("os.name")?.toLowerCase(Locale.US).let { name -> when { name == null -> OSKind.Unknown name.startsWith("windows") -> OSKind.Windows diff --git a/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt b/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt index 965f159863c..a4f6842585e 100644 --- a/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt +++ b/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.kotlinp import kotlinx.metadata.* import kotlinx.metadata.jvm.* +import java.util.* private object SpecialCharacters { const val TYPE_ALIAS_MARKER = '^' @@ -309,7 +310,7 @@ private fun printType(flags: Flags, output: (String) -> Unit): KmTypeVisitor = printType(flags) { argumentTypeString -> arguments += buildString { if (variance != KmVariance.INVARIANT) { - append(variance.name.toLowerCase()).append(" ") + append(variance.name.toLowerCase(Locale.US)).append(" ") } append(argumentTypeString) } @@ -399,7 +400,7 @@ private fun printTypeParameter( append("@").append(renderAnnotation(annotation)).append(" ") } if (variance != KmVariance.INVARIANT) { - append(variance.name.toLowerCase()).append(" ") + append(variance.name.toLowerCase(Locale.US)).append(" ") } append("T#$id") if (settings.isVerbose) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt index fa4737046c9..eb056801f36 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/SourcesetIR.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType import java.nio.file.Path +import java.util.* sealed class SourcesetIR : BuildSystemIR { @@ -55,4 +56,4 @@ data class MultiplatformSourcesetIR( } val MultiplatformSourcesetIR.sourcesetName - get() = targetName + sourcesetType.name.capitalize() \ No newline at end of file + get() = targetName + sourcesetType.name.capitalize(Locale.US) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt index 10b14a1efcd..ab22f552bed 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt @@ -4,8 +4,6 @@ import kotlinx.collections.immutable.toPersistentList import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Reader - -import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.NonDefaultTargetConfigurationIR @@ -13,6 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.* import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module +import java.util.* interface NativeTargetConfigurator : TargetConfigurator { val isDesktopTarget: Boolean @@ -22,7 +21,7 @@ interface NativeTargetConfigurator : TargetConfigurator { class RealNativeTargetConfigurator private constructor( override val moduleSubType: ModuleSubType ) : NativeTargetConfigurator, SimpleTargetConfigurator { - override val text: String = moduleSubType.name.capitalize() + override val text: String = moduleSubType.name.capitalize(Locale.US) override val isDesktopTarget: Boolean get() = moduleSubType.isNativeDesktop diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/mpp/mpp.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/mpp/mpp.kt index e8c990b37f5..b8ac41ea6a5 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/mpp/mpp.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/mpp/mpp.kt @@ -7,12 +7,9 @@ package org.jetbrains.kotlin.tools.projectWizard.mpp import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.core.* -import org.jetbrains.kotlin.tools.projectWizard.core.safeAs import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.SimpleTargetConfigurator import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.inContextOfModuleConfigurator -import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.plugins.projectPath import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage @@ -22,6 +19,7 @@ import org.jetbrains.kotlin.tools.projectWizard.templates.FileDescriptor import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplate import org.jetbrains.kotlin.tools.projectWizard.templates.FileTextDescriptor import java.nio.file.Path +import java.util.* @DslMarker annotation class ExpectFileDSL @@ -321,7 +319,7 @@ private fun pathForFileInTarget( sourcesetType: SourcesetType, ) = mppModulePath / Defaults.SRC_DIR / - "${target.name}${sourcesetType.name.capitalize()}" / + "${target.name}${sourcesetType.name.capitalize(Locale.US)}" / mppModule.configurator.kotlinDirectoryName / javaPackage?.asPath() / - filename \ No newline at end of file + filename diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt index 98be940aebe..ca7b830261d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.* import java.nio.file.Path +import java.util.* data class ModulesToIrConversionData( val rootModules: List, @@ -265,7 +266,7 @@ class ModulesToIRsConverter( val (moduleDependencies) = createModuleDependencies(target) mutateProjectStructureByModuleConfigurator(target, modulePath) val sourcesetss = target.sourcesets.map { sourceset -> - val sourcesetName = target.name + sourceset.sourcesetType.name.capitalize() + val sourcesetName = target.name + sourceset.sourcesetType.name.capitalize(Locale.US) MultiplatformSourcesetIR( sourceset.sourcesetType, modulePath / Defaults.SRC_DIR / sourcesetName, diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt index 531d88be318..a34a3405c4c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt @@ -9,8 +9,8 @@ import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetti import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfiguratorWithTests -import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.MppModuleConfigurator.runArbitraryTask import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.isPresent +import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.settingValue import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin @@ -21,8 +21,8 @@ import org.jetbrains.kotlin.tools.projectWizard.templates.* import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptionApplicationState import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.applyAll -import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.settingValue import java.nio.file.Path +import java.util.* class TemplatesPlugin(context: Context) : Plugin(context) { override val path = pluginPath @@ -174,7 +174,7 @@ class TemplatesPlugin(context: Context) : Plugin(context) { is SrcFilePath -> moduleConfigurator.kotlinDirectoryName is ResourcesFilePath -> moduleConfigurator.resourcesDirectoryName } - SRC_DIR / "${module.name}${filePath.sourcesetType.name.capitalize()}" / directory + SRC_DIR / "${module.name}${filePath.sourcesetType.name.capitalize(Locale.US)}" / directory } is FakeMultiplatformModuleIR -> error("Not supported for FakeMultiplatformModuleIR") } @@ -193,4 +193,4 @@ class TemplatesPlugin(context: Context) : Plugin(context) { templates, fileTemplatesToRender ) -} \ No newline at end of file +} diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt index 9a302a4c508..21bdae1083e 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt @@ -7,6 +7,11 @@ package org.jetbrains.kotlin.tools.projectWizard.templates import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle +import org.jetbrains.kotlin.tools.projectWizard.Versions +import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration +import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.asPath import org.jetbrains.kotlin.tools.projectWizard.core.buildList @@ -15,20 +20,19 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.TargetConfigurationIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.addWithJavaIntoJvmTarget import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact -import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType -import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem -import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint -import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle -import org.jetbrains.kotlin.tools.projectWizard.Versions -import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration -import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration -import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType +import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin +import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind -import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.* +import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version +import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint +import java.util.* class KtorServerTemplate : Template() { override val title: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.title") @@ -110,5 +114,5 @@ enum class KtorServerEngine(val engineName: String, val dependencyName: String) get() = engineName.capitalize() val import: String - get() = "io.ktor.server.${engineName.decapitalize()}.${engineName.capitalize()}" -} \ No newline at end of file + get() = "io.ktor.server.${engineName.decapitalize(Locale.US)}.${engineName.capitalize(Locale.US)}" +} diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt index d359e09f6d7..9b4f9917e7b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt @@ -1,12 +1,14 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + package org.jetbrains.kotlin.tools.projectWizard.templates import org.jetbrains.kotlin.tools.projectWizard.Identificator import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration - - import org.jetbrains.kotlin.tools.projectWizard.core.* - import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.* import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* @@ -14,8 +16,6 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatf import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.RunConfigurationsPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType -import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptor import java.nio.file.Path +import java.util.* import kotlin.properties.ReadOnlyProperty interface TemplateEnvironment { @@ -163,7 +164,7 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor, DisplayableSet private fun Reader.createDefaultSettings() = mapOf( - "projectName" to StructurePlugin.name.settingValue.capitalize() + "projectName" to StructurePlugin.name.settingValue.capitalize(Locale.US) ) override fun equals(other: Any?): Boolean = @@ -331,4 +332,4 @@ operator fun TemplateApplicationResult.plus(other: TemplateApplicationResult) = irsToAddToBuildFile + other.irsToAddToBuildFile, updateTarget andThen other.updateTarget, updateModuleIR andThen other.updateModuleIR, - ) \ No newline at end of file + ) diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/utils.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/utils.kt index 4b35065f10d..8254b14cb10 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/utils.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/target/utils.kt @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.konan.target +import java.util.* + /** * Name of a preset used in the 'kotlin-multiplatform' Gradle plugin to represent this target. */ @@ -19,5 +21,5 @@ val KonanTarget.presetName: String private fun evaluatePresetName(targetName: String): String { val nameParts = targetName.split('_').mapNotNull { it.takeIf(String::isNotEmpty) } - return nameParts.asSequence().drop(1).joinToString("", nameParts.firstOrNull().orEmpty(), transform = String::capitalize) + return nameParts.asSequence().drop(1).joinToString("", nameParts.firstOrNull().orEmpty()) { it.capitalize(Locale.US) } } diff --git a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/ConvertGettersAndSettersToPropertyProcessing.kt b/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/ConvertGettersAndSettersToPropertyProcessing.kt index ac7f6371f4e..baa5091324f 100644 --- a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/ConvertGettersAndSettersToPropertyProcessing.kt +++ b/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/ConvertGettersAndSettersToPropertyProcessing.kt @@ -52,6 +52,7 @@ import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.checker.KotlinTypeChecker import org.jetbrains.kotlin.types.isError import org.jetbrains.kotlin.types.typeUtil.isUnit +import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeAsciiOnly import org.jetbrains.kotlin.util.isJavaDescriptor import org.jetbrains.kotlin.utils.addToStdlib.cast import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull @@ -369,7 +370,7 @@ private class ConvertGettersAndSettersToPropertyStatefulProcessing( return declarations .asSequence() .mapNotNull { it.asPropertyAccessor() } - .groupBy { it.name.removePrefix("is").decapitalize() } + .groupBy { it.name.removePrefix("is").decapitalizeAsciiOnly() } .values .mapNotNull { group -> val realGetter = group.firstIsInstanceOrNull() diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt index 218f4ec7587..40b9b9a4e97 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/ConversionsRunner.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.nj2k.tree.JKLambdaExpression import org.jetbrains.kotlin.nj2k.tree.JKParameter import org.jetbrains.kotlin.nj2k.tree.JKTreeRoot import org.jetbrains.kotlin.utils.addToStdlib.safeAs +import java.util.* object ConversionsRunner { private fun createConversions(context: NewJ2kConverterContext) = listOf( @@ -105,7 +106,7 @@ object ConversionsRunner { private fun Conversion.description(): String { val conversionName = this::class.simpleName - val words = conversionName?.let { wordRegex.findAll(conversionName).map { it.value.decapitalize() }.toList() } + val words = conversionName?.let { wordRegex.findAll(conversionName).map { it.value.decapitalize(Locale.US) }.toList() } return when { conversionName == null -> "Converting..." conversionName.endsWith("Conversion") -> "Converting ${words!!.dropLast(1).joinToString(" ")}" @@ -114,4 +115,4 @@ object ConversionsRunner { } private val wordRegex = "[A-Z][a-z0-9]+".toRegex() -} \ No newline at end of file +} diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/BoxedTypeOperationsConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/BoxedTypeOperationsConversion.kt index b3b82aef797..c006b2c9851 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/BoxedTypeOperationsConversion.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/BoxedTypeOperationsConversion.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.nj2k.conversions import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext import org.jetbrains.kotlin.nj2k.tree.* import org.jetbrains.kotlin.nj2k.types.primitiveTypes - +import java.util.* class BoxedTypeOperationsConversion(context: NewJ2kConverterContext) : RecursiveApplicableConversionBase(context) { override fun applyToElement(element: JKTreeElement): JKTreeElement { @@ -40,7 +40,7 @@ class BoxedTypeOperationsConversion(context: NewJ2kConverterContext) : Recursive if (operationType !in primitiveTypeNames) return null return JKCallExpressionImpl( symbolProvider.provideMethodSymbol( - "kotlin.${primitiveTypeName.capitalize()}.to${operationType.capitalize()}" + "kotlin.${primitiveTypeName.capitalize(Locale.US)}.to${operationType.capitalize(Locale.US)}" ), JKArgumentList() ).withFormattingFrom(methodCallExpression) @@ -59,4 +59,4 @@ class BoxedTypeOperationsConversion(context: NewJ2kConverterContext) : Recursive private val primitiveTypeUnwrapRegexp = """([\w.]+)\.(\w+)Value""".toRegex() } -} \ No newline at end of file +} diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitCastsConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitCastsConversion.kt index cbff0757e06..05ca33639fd 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitCastsConversion.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitCastsConversion.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.nj2k.types.* import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType import org.jetbrains.kotlin.utils.addToStdlib.safeAs +import java.util.* class ImplicitCastsConversion(context: NewJ2kConverterContext) : RecursiveApplicableConversionBase(context) { override fun applyToElement(element: JKTreeElement): JKTreeElement { @@ -138,8 +139,8 @@ class ImplicitCastsConversion(context: NewJ2kConverterContext) : RecursiveApplic } } - val initialTypeName = expressionTypeAsPrimitive.jvmPrimitiveType.javaKeywordName.capitalize() - val conversionFunctionName = "to${toTypeAsPrimitive.jvmPrimitiveType.javaKeywordName.capitalize()}" + val initialTypeName = expressionTypeAsPrimitive.jvmPrimitiveType.javaKeywordName.capitalize(Locale.US) + val conversionFunctionName = "to${toTypeAsPrimitive.jvmPrimitiveType.javaKeywordName.capitalize(Locale.US)}" return JKQualifiedExpression( copyTreeAndDetach().parenthesizeIfBinaryExpression(), JKCallExpressionImpl( @@ -164,4 +165,4 @@ class ImplicitCastsConversion(context: NewJ2kConverterContext) : RecursiveApplic val lastArrayType = realParameterTypes.lastOrNull()?.arrayInnerType() ?: return realParameterTypes return realParameterTypes.subList(0, realParameterTypes.lastIndex) + lastArrayType } -} \ No newline at end of file +} diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/utils.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/utils.kt index 2e9571b4214..70040a87068 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/utils.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/utils.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.nj2k import org.jetbrains.kotlin.lexer.KtKeywordToken import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.load.java.JvmAbi +import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeAsciiOnly fun List.replace(element: T, replacer: T): List { val mutableList = toMutableList() @@ -22,14 +23,14 @@ fun String.asGetterName() = ?.takeIf { it.isNotEmpty() && it.first().isUpperCase() || it.startsWith("is") && it.length > 2 && it[2].isUpperCase() - }?.decapitalize() + }?.decapitalizeAsciiOnly() ?.escaped() fun String.asSetterName() = takeIf { JvmAbi.isSetterName(it) } ?.removePrefix("set") ?.takeIf { it.isNotEmpty() && it.first().isUpperCase() } - ?.decapitalize() + ?.decapitalizeAsciiOnly() ?.escaped() fun String.isPossiblyGetterOrSetterName() = @@ -40,4 +41,4 @@ private val KEYWORDS = KtTokens.KEYWORDS.types.map { (it as KtKeywordToken).valu fun String.escaped() = if (this in KEYWORDS || '$' in this) "`$this`" - else this \ No newline at end of file + else this diff --git a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/incrementalProcessors.kt b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/incrementalProcessors.kt index a674abc535c..bf1c80acd4b 100644 --- a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/incrementalProcessors.kt +++ b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/incremental/incrementalProcessors.kt @@ -9,6 +9,7 @@ import com.sun.tools.javac.code.Symbol import org.jetbrains.kotlin.kapt3.base.util.KaptLogger import java.io.File import java.net.URI +import java.util.* import javax.annotation.processing.Filer import javax.annotation.processing.ProcessingEnvironment import javax.annotation.processing.Processor @@ -49,7 +50,7 @@ class IncrementalProcessor(private val processor: Processor, private val kind: D if (fromOptions == null) { RuntimeProcType.NON_INCREMENTAL } else { - val declaredType = fromOptions.drop("org.gradle.annotation.processing.".length).toUpperCase() + val declaredType = fromOptions.drop("org.gradle.annotation.processing.".length).toUpperCase(Locale.US) if (ALLOWED_RUNTIME_TYPES.contains(declaredType)) { enumValueOf(declaredType) } else { @@ -251,4 +252,4 @@ enum class RuntimeProcType(val isIncremental: Boolean) { AGGREGATING(true), ISOLATING(true), NON_INCREMENTAL(false), -} \ No newline at end of file +} diff --git a/plugins/kapt3/kapt3-idea/src/org/jetbrains/kotlin/kapt/idea/KaptGradleProjectImportHandler.kt b/plugins/kapt3/kapt3-idea/src/org/jetbrains/kotlin/kapt/idea/KaptGradleProjectImportHandler.kt index a91bb459591..68947141c64 100644 --- a/plugins/kapt3/kapt3-idea/src/org/jetbrains/kotlin/kapt/idea/KaptGradleProjectImportHandler.kt +++ b/plugins/kapt3/kapt3-idea/src/org/jetbrains/kotlin/kapt/idea/KaptGradleProjectImportHandler.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.idea.configuration.GradleProjectImportHandler import org.jetbrains.kotlin.idea.facet.KotlinFacet import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData import java.io.File +import java.util.* class KaptGradleProjectImportHandler : GradleProjectImportHandler { override fun importBySourceSet(facet: KotlinFacet, sourceSetNode: DataNode) { @@ -42,7 +43,7 @@ class KaptGradleProjectImportHandler : GradleProjectImportHandler { private fun isKaptCompilerPluginPath(path: String): Boolean { val lastIndexOfFile = path.lastIndexOfAny(charArrayOf('/', File.separatorChar)).takeIf { it >= 0 } ?: return false - val fileName = path.drop(lastIndexOfFile + 1).toLowerCase() + val fileName = path.drop(lastIndexOfFile + 1).toLowerCase(Locale.US) return fileName.matches("kotlin\\-annotation\\-processing(\\-gradle)?\\-[0-9].*\\.jar".toRegex()) } -} \ No newline at end of file +}