diff --git a/ChangeLog.md b/ChangeLog.md index ab087ce3a0e..5dc58e7b1c0 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2387,7 +2387,7 @@ ## Recent ChangeLogs: -### [ChangeLog-1.3.X](ChangeLog-1.3.X.md) -### [ChangeLog-1.2.X](ChangeLog-1.2.X.md) -### [ChangeLog-1.1.X](ChangeLog-1.1.X.md) -### [ChangeLog-1.0.X](ChangeLog-1.0.X.md) \ No newline at end of file +### [ChangeLog-1.3.X](docs/changelogs/ChangeLog-1.3.X.md) +### [ChangeLog-1.2.X](docs/changelogs/ChangeLog-1.2.X.md) +### [ChangeLog-1.1.X](docs/changelogs/ChangeLog-1.1.X.md) +### [ChangeLog-1.0.X](docs/changelogs/ChangeLog-1.0.X.md) diff --git a/ReadMe.md b/ReadMe.md index 219e30c02de..fc1d8b944da 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -2,6 +2,7 @@ [![TeamCity (simple build status)](https://img.shields.io/teamcity/http/teamcity.jetbrains.com/s/Kotlin_KotlinPublic_Compiler.svg)](https://teamcity.jetbrains.com/buildConfiguration/Kotlin_KotlinPublic_Compiler?branch=%3Cdefault%3E&buildTypeTab=overview&mode=builds) [![Maven Central](https://img.shields.io/maven-central/v/org.jetbrains.kotlin/kotlin-maven-plugin.svg)](https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.jetbrains.kotlin%22) [![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0) +[![Revved up by Gradle Enterprise](https://img.shields.io/badge/Revved%20up%20by-Gradle%20Enterprise-06A0CE?logo=Gradle&labelColor=02303A)](https://ge.jetbrains.com/scans?search.rootProjectNames=Kotlin) # Kotlin Programming Language 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/build.gradle.kts b/build.gradle.kts index 9409019b664..87b7c9483f2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -445,7 +445,6 @@ allprojects { if (useJvmIrBackend) { useIR = true - freeCompilerArgs += "-Xir-binary-with-stable-abi" } } } diff --git a/buildSrc/src/main/kotlin/jdksFinder.kt b/buildSrc/src/main/kotlin/jdksFinder.kt index b0afb396955..6c2216304e4 100644 --- a/buildSrc/src/main/kotlin/jdksFinder.kt +++ b/buildSrc/src/main/kotlin/jdksFinder.kt @@ -101,8 +101,12 @@ fun MutableCollection.discoverJdks(project: Project) { } } -private val macOsJavaHomeOutRegexes = listOf(Regex("""\s+(\S+),\s+(\S+):\s+".*?"\s+(.+)"""), - Regex("""\s+(\S+)\s+\((.*?)\):\s+(.+)""")) +private val macOsJavaHomeOutRegexes = + listOf( + Regex("""\s+(\S+),\s+(\S+):\s+".*?"\s+(.+)"""), + Regex("""\s+(\S+)\s+\((.*?)\):\s+(.+)"""), + Regex("""\s+(\S+)\s+\((.*?)\)\s+"[^"]*"\s+-\s+"[^"]*"\s(.+)""") +) fun MutableCollection.discoverJdksOnMacOS(project: Project) { val procBuilder = ProcessBuilder("/usr/libexec/java_home", "-V").redirectErrorStream(true) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java index 2ffacdd6f48..c44172f262d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.resolve.AnnotationChecker; import org.jetbrains.kotlin.resolve.DescriptorUtils; +import org.jetbrains.kotlin.resolve.InlineClassesUtilsKt; import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker; import org.jetbrains.kotlin.resolve.constants.*; import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; @@ -497,6 +498,9 @@ public abstract class AnnotationCodegen { public Void visitKClassValue(KClassValue value, Void data) { KotlinType classType = value.getArgumentType(module); innerClassConsumer.addInnerClassInfoFromAnnotation(DescriptorUtils.getClassDescriptorForType(classType)); + if (InlineClassesUtilsKt.isInlineClassType(classType)) { + classType = TypeUtils.makeNullable(classType); + } annotationVisitor.visit(name, typeMapper.mapType(classType)); return null; } 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/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt index 844cfe00604..ddc5fc3e414 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt @@ -108,7 +108,7 @@ class GenerationState private constructor( fun wantsDiagnostics(v: Boolean) = apply { wantsDiagnostics = v } - var jvmBackendClassResolver: JvmBackendClassResolver = JvmBackendClassResolverForModuleWithDependencies(module); private set + private var jvmBackendClassResolver: JvmBackendClassResolver = JvmBackendClassResolverForModuleWithDependencies(module) fun jvmBackendClassResolver(v: JvmBackendClassResolver) = apply { jvmBackendClassResolver = v } @@ -153,8 +153,10 @@ class GenerationState private constructor( val deserializationConfiguration: DeserializationConfiguration = CompilerDeserializationConfiguration(configuration.languageVersionSettings) - val deprecationProvider = - DeprecationResolver(LockBasedStorageManager.NO_LOCKS, configuration.languageVersionSettings, CoroutineCompatibilitySupport.ENABLED, JavaDeprecationSettings) + val deprecationProvider = DeprecationResolver( + LockBasedStorageManager.NO_LOCKS, configuration.languageVersionSettings, CoroutineCompatibilitySupport.ENABLED, + JavaDeprecationSettings + ) init { val icComponents = configuration.get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS) @@ -250,6 +252,7 @@ class GenerationState private constructor( class ForScript { // quite a mess, this one is an input from repl interpreter var earlierScriptsForReplInterpreter: List? = null + // and the rest is an output from the codegen var resultFieldName: String? = null var resultTypeString: String? = null @@ -346,7 +349,7 @@ class GenerationState private constructor( fun beforeCompile() { markUsed() - if (!isIrBackend || languageVersionSettings.getFlag(JvmAnalysisFlags.irCheckLocalNames)) { + if (!isIrBackend) { CodegenBinding.initTrace(this) } } diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt index 25ff966572d..0c4252ef04c 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt @@ -88,12 +88,6 @@ class K2JVMCompilerArguments : CommonCompilerArguments() { @Argument(value = "-Xno-use-ir", description = "Do not use the IR backend. Useful for a custom-built compiler where IR backend is enabled by default") var noUseIR: Boolean by FreezableVar(false) - @Argument( - value = "-Xir-check-local-names", - description = "Check that names of local classes and anonymous objects are the same in the IR backend as in the old backend" - ) - var irCheckLocalNames: Boolean by FreezableVar(false) - @Argument( value = "-Xallow-unstable-dependencies", description = "Do not report errors on classes in dependencies, which were compiled by an unstable version of the Kotlin compiler" @@ -314,6 +308,13 @@ class K2JVMCompilerArguments : CommonCompilerArguments() { ) var jvmDefault: String by FreezableVar(JvmDefaultMode.DEFAULT.description) + @Argument( + value = "-Xdefault-script-extension", + valueDescription = "