mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-03-10 08:31:29 +00:00
Capitalize/decapitalize only ASCII characters across project
Use {de,}capitalizeAsciiOnly and to{Lower,Upper}CaseAsciiOnly where
possible, and stdlib's functions with Locale.US everywhere else.
Otherwise, if the default system locale is Turkish, the capital latin
letter "I" is transformed in toLowerCase to "ı" (see
66bc142f92/libraries/stdlib/jvm/test/text/StringJVMTest.kt (L119)),
which for example breaks the codegen for `intArrayOf` in
KT-25400/KT-43405.
Similarly, lower case latin letter "i" is transformed to "İ".
#KT-13631 Fixed
#KT-25400 Fixed
#KT-43405 Fixed
This commit is contained in:
@@ -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<ClassId, ProtoData>
|
||||
|
||||
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<ByteArray>(
|
||||
operator fun get(packageName: String) = storage[packageName]
|
||||
|
||||
override fun dumpValue(value: ByteArray): String = "Package metadata: ${value.md5()}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: <MESSAGES>
|
||||
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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
|
||||
|
||||
@@ -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<KDocSection>().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<KDocSection>().firstOrNull {
|
||||
it.name == tag.name.toLowerCase() && it.getSubjectName() == subjectName
|
||||
it.name == tag.name.toLowerCaseAsciiOnly() && it.getSubjectName() == subjectName
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Pair<String, MutableList<String>>>
|
||||
|
||||
@@ -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("<anonymous>"))
|
||||
if (fir.superTypeRefs.any { it.render() != "kotlin/Any" }) {
|
||||
data.append(": ")
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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("*/ ")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<CompletionParameters>() {
|
||||
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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Type>()
|
||||
@@ -281,4 +280,4 @@ class VariableOrParameterNameWithTypeCompletion(
|
||||
object Weigher : LookupElementWeigher("kotlin.parameterNameAndTypePriority") {
|
||||
override fun weigh(element: LookupElement, context: WeighingContext): Int = element.getUserData(PRIORITY_KEY) ?: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ object KotlinNameSuggester {
|
||||
val argText = typeArguments.joinToString(separator = "") { it.typeReference?.typeElement?.render() ?: "" }
|
||||
"$argText${referenceExpression?.text ?: ""}"
|
||||
}
|
||||
else -> text.capitalize()
|
||||
else -> text.capitalizeAsciiOnly()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<String> {
|
||||
val name = task.name
|
||||
return listOf(namePrefix + CLEAN_NAME_PREFIX + name.capitalize(), namePrefix + name)
|
||||
return listOf(namePrefix + CLEAN_NAME_PREFIX + name.capitalizeAsciiOnly(), namePrefix + name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String> {
|
||||
return listOf("clean" + task.taskName.capitalize(), task.taskName)
|
||||
return listOf("clean" + task.taskName.capitalizeAsciiOnly(), task.taskName)
|
||||
}
|
||||
}
|
||||
|
||||
private val ExternalSystemRunTask.presentableName: String
|
||||
get() = targetName ?: (":$taskName")
|
||||
get() = targetName ?: (":$taskName")
|
||||
|
||||
@@ -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<MavenId>, 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)
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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<KtDeclarationWithBody>(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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<KtExpression>(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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<St
|
||||
expressions.singleOrNull()?.let { expr ->
|
||||
val property = expr.getStrictParentOfType<KtProperty>()
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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<KtNamedDeclaration>): 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
|
||||
|
||||
@@ -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<Expression>, 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"
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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()
|
||||
get() = targetName + sourcesetType.name.capitalize(Locale.US)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
filename
|
||||
|
||||
@@ -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<Module>,
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()}"
|
||||
}
|
||||
get() = "io.ktor.server.${engineName.decapitalize(Locale.US)}.${engineName.capitalize(Locale.US)}"
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -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) }
|
||||
}
|
||||
|
||||
@@ -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<RealGetter>()
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 <T> List<T>.replace(element: T, replacer: T): List<T> {
|
||||
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
|
||||
else this
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<GradleSourceSetData>) {
|
||||
@@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user