Kotlin 1.4.0
Contents
The release contents the JVM version of the Kotlin compiler, and also the Kotlin/Native compiler for the supported platforms: Linux, macOS and Windows.
Changelog
1.4.0
Compiler
New Features
KT-23729
Provide a way to generate JVM default method bodies in interfaces delegating to DefaultImplsKT-30330
Introduce KotlinNothingValueException and throw it instead of NPE on expressions of type NothingKT-38435
Support suspend conversion on callable references in JVM backend
Fixes
KT-35483
NI: compatibility modeKT-39728
Declarations fromkotlin.reflect
resolved to expect-classes even in JVM modules in IDEKT-40153
REPL IDE services completion fails on imports completionKT-40404
Mixed named/positional arguments: argument can be passed twiceKT-40544
NI: "TYPE_MISMATCH: Required: MutableList<out T!> Found: List" caused by Java interface functionKT-40555
NI: Spread operator allows inferred nullable typesKT-40646
NI: TYPE_MISMATCH: "inferred type is Unit but Observer was expected" caused by LieData.observe inferenceKT-40691
False positive CAPTURED_VAL_INITIALIZATION with EXACTLY_ONCE contractKT-40693
UnsupportedOperationException: no descriptor for type constructor of (CapturedType(out TResult)..CapturedType(out TResult)?)KT-40824
Usages of a typealias lose nullability and annotations in deserializationKT-40843
Unhandled exception for suspending methods that return Result typeKT-40869
Recursion computation inside compiler resolve on a correct codeKT-40893
Error "Captured values initialization is forbidden due to possible reassignment" when attempting to use the plusAssign operator with a java list inside an inline functionKT-40919
kotlin.collections.ArrayDeque requires an explicit import when compiling with kotlinc 1.4-RC and -language-version 1.3KT-40920
Regression in JvmDefault: incorrect access to missing DefaultImpls on default methods in Java interface overriding Kotlin interfaceKT-40978
Prohibit using suspend functions as SAM in fun interfaces
Kotlin/Native
- Objective-C/Swift interop:
- Added native-specific frontend checkers (implemented in the main Kotlin repository: GH-3293, GH-3091, GH-3172)
- .dSYMs for release binaries on Apple platforms (GH-4085)
- Improved compilation time of builds with interop libraries by reworking cinterop under the hood.
- Experimental mimalloc allocator support (-Xallocator=mimalloc) to improve execution time performance. (GH-3704)
- Tune GC to improve execution time performance
- Various fixes to compiler caches and Gradle daemon usage
Docs & Examples
KT-35218
Fix misleading in JavaDoc forcreateTempDir
/createTempFile
KT-36981
Provide a visual illustration of source sets structure generated byios()
,watchos()
,tvos()
presetsKT-38050
Language Guide: MPP reference: add sample of language settings for all roots instead of common root only
IDE
KT-30265
IDE, MPP: False negative TYPE_PARAMETER_AS_REIFIED in common codeKT-40494
UAST: "NoSuchElementException: No element of given type found" with use-site target annotationKT-40639
Shift IDE plugins updater numbers for Kotlin plugin
IDE. Code Style, Formatting
KT-40636
Hard freeze on formatter: infinite recursion
IDE. Gradle Integration
KT-30116
IDE: Unresolved reference in MPP module (androidMain source set) for annotation from common module (defined in commonMain and with JVM target)
IDE. Gradle. Script
KT-34552
Deadlock in ScriptDefinitionsManagerKT-40675
Gradle build file is not highlighted until navigating to symbol
IDE. JS
KT-40461
Create new projects with kotlin.js.generate.executable.default=false
IDE. Script
KT-39547
Kotlin script support freezes IDEAKT-40242
gradle.kts: Deadlock in ScriptClassRootsUpdater
IDE. Wizards
KT-36153
New Project Wizard: provide more referential info on project structure editor screenKT-39904
New Project wizard 1.4: update Frontend Application to make it run with JS IRKT-40149
Gradle project wizard: templates for Kotlin/JS are not properly formatted
JavaScript
KT-25859
JS: support function references to functions with vararg if expected type ends with repeated vararg element typeKT-40083
K/JS-IR: java.lang.IllegalStateException: has not acquired a symbol yetKT-40892
KJS, IR: Unresolved references on importing classes from kotlinx-nodejs
Libraries
KT-39051
Libraries native artifacts are published without sources
Tools. Gradle
KT-27816
Provide a possibility to specify intermediate source sets between platform-agnostic and platform-specific test source setsKT-37720
Replace ArtifactTransform with TransformActionKT-40559
Adding the stdlib by default triggers warning in the Android Gradle Plugin
Tools. Gradle. JS
KT-40093
Incorrect updating version of Kotlin/JS dependencies in package.json
Tools. Gradle. Multiplatform
KT-27320
Provide a way to reuse same sources for similar Native targetKT-40058
NPE from mpp gradle plugin on kotlinx.benchmarks
Tools. Gradle. Native
KT-40801
Gradle CocoaPods integration: Cannot change a framework name
1.4-RC
Backend. Native
KT-40209
java.lang.UnsupportedOperationException: org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl@76484173KT-40367
Kotlin/Native-Swift interop (iOS): Array member initialization failing in release builds
Compiler
Fixes
KT-31025
Type mismatch when callable reference is resolved with a functional expected type and SAM conversionKT-37388
Consider relaxing rules about inferring Nothing inside special constructions (if, try, when)KT-37717
NI: "IllegalStateException: Error type encountered" with @BuilderInferenceKT-38427
New inference in branched conditions (if, when) results in odd behavior with inconsistent compiler warnings and runtime errorsKT-38899
NI: False positive IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION leads to NPEKT-39468
NI: overload resolution ambiguity between functions passingT
andFoo<T>
with a contravariant receiverKT-39618
NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER: unable to infer generic type on @BuilderInference annotated lambda parameter with receiver typeKT-39633
NI: Incorrect type parameter instantiation based on contravariant type argumentKT-39691
NI: Missing SAM conversion for nullable lambdaKT-39860
Make Kotlin binaries publicly available (set KotlinCompilerVersion.IS_PRE_RELEASE = false)KT-39900
NI: Incorrect type inference in a lambda returning UnitKT-39925
New JVM default compilation mode doesn't check that JVM target is 1.8KT-39943
Write information about all-compatibility mode in metadataKT-39953
NI: ClassCastException "cannot be cast to java.lang.Void" with if-else in return statement in ANdroid projectKT-40045
NI: lambda’s receiver type isn't inferred properlyKT-40057
NI: provideDelegate org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: wrong bytecode generated for static initializerKT-40060
NI: postponed variable from the builder inference flows to back-end and leads to throw an exceptionKT-40112
Kotlin Gradle DSL: COMPATIBILITY_WARNING onkotlin.sourceSets
blockKT-40113
Kotlin Gradle DSL: "Expression 'main' cannot be invoked as a function" fordistributions.main
DSL blockKT-40128
Introduce compiler key to disable compatibility resolution mechanism for new inference featuresKT-40151
NI: postponed variable isn't substituted for top-level CR inside builder inferenceKT-40214
AbstractMethodError in gradle subplugin which is used in Android appKT-40234
Deprecation level "hidden" has no effect on callable reference argumentKT-40247
NI: false positive "function should be called from coroutine or another suspend function" for suspend invoke operator in try-catchKT-40254
Rewrite at slice with two callable reference argumentsKT-40269
NI: "disabled Unit conversions" error has appeared on green codeKT-40337
NI: false positive "function should be called from coroutine or another suspend function" for suspend invoke operator inwhen
blockKT-40406
Prohibit reflection on adapted callable references
IDE
KT-39968
Paths in KotlinJavaRuntime library aren't updated after you run IDE from a different directoryKT-39989
NullPointerException when opening Kotlin facets in Project Structure dialog in IDEA 192KT-40311
Create change_notes for 1.4 in IDE plugin description
IDE. Debugger
KT-39808
(CoroutineDebugger) Doesn't start with kotlinx-coroutines-core >= 1.3.6KT-40073
(CoroutineDebugger) Change minimum supported kotlinx.coroutines version to 1.3.8*KT-40172
Restored frame variables isn't shown for suspended coroutinesKT-40635
Coroutines Debugger: make IDE plugin accept coroutines 1.3.8-rc* versions as well
IDE. Gradle Integration
KT-38744
No dependency between Androidtest
and commonTest source sets with kotlin.mpp.enableGranularSourceSetsMetadata=trueKT-39037
'None of the consumable configurations have attributes' in MPP IDE import with transitive project dependency on self
IDE. Gradle. Script
KT-31137
IntelliJ would get very slow when editing gradle buildSrc(using the kotlin dsl)KT-36078
Gradle Kotlin script context is not reloaded when gradle/wrapper/gradle-wrapper.properties file is changedKT-39317
ISE “Calling invokeAndWait from read-action leads to possible deadlock.” on importing simple Gradle-based project in nightly IJ
IDE. Inspections and Intentions
KT-28662
Inspection to flag usage of the wrong Transient annotation on Kotlin Serializable classKT-34209
Switch default behaviour in 1.4 for insertion (to build script) via quick fix of the compiler option enabling inline classesKT-36131
Suggest to add a missing module dependency on an unresolved reference in Kotlin codeKT-37462
Add "Add dependency to module" quickfix in multimodule Maven projectKT-39869
Add whole project migration usages of kotlin.browser.* & kotlin.dom.* to kotlinx.browser.* & kotlinx.dom.* respectively
IDE. Wizards
KT-40004
New Project wizard 1.4+: nohttps://dl.bintray.com/kotlin/kotlinx
repository is added for kotlinx-htmlKT-40037
New Project wizard: update Ktor versionKT-40092
Wizard: the templates panel on mac OS is too wideKT-40232
New Wizard: Android Sdk path doesn't have backslash escaping on WindowsKT-40371
New Project Wizard: Frontend Application / Library results in broken run configurationKT-40377
New Project Wizard: Frontend Application defines NPM dependencies that are unnecessary with Kotlin 1.4-RC+KT-40378
New Project Wizard: Frontend Application, Disabling JavaScript test framework has no effectKT-40407
Wizard: do not add stdlib by default for Gradle projects in wizard
JS. Tools
KT-39984
Update dukat version in toolchain near to release of 1.4-RC
JavaScript
KT-32186
Make sure K/JS Reflection API documentation is correct and fix it.KT-37563
K/JS: stacktrace is not captured for exceptions without primary constructor inherited from Exception/ErrorKT-37752
Generated typescript incorrect for constructors of derived classesKT-37883
KJS: Generated TypeScript uses 'declare' rather than 'export'KT-38771
JS: support non-reified type parameters in typeOfKT-39873
Update Kotlin JavaScript wrappers due to NON_EXPORTABLE_TYPE diagnostic introductionKT-40126
[JS / IR] NPE while compiling interfaces with invoke which is passed as a delegateKT-40216
KJS / IR: AssertionError caused by an anonymous object in the dependency project
Libraries
KT-33069
StringBuilder common functionsKT-35972
Add contract to builder functionsKT-37101
Mark following api with DeprecatedSinceKotlin("1.4")KT-38360
Make sure that JB libraries correctly define their npm deps and republish them (after KT-30619)KT-38817
'capitalize' should convert digraphs to title caseKT-40168
Remove StringBuilder.capacity from common and JS parts
Middle-end. IR
KT-40520
Assert during fake-override generation
Tools. Commonizer
KT-40199
Commonizer loses nullability of abbreviated types
Tools. Compiler Plugins
KT-40036
Add diagnostic that shows is serialization plugin compatible with serialization-runtime
Tools. Gradle
KT-39755
[KJS / Gradle / Legacy mode] Directory with whitespace is not processedKT-39809
Kotlin Gradle plugin: ServiceConfigurationError: org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin: Provider org.jetbrains.kotlin.gradle.internal.AndroidSubplugin not a subtypeKT-39977
Collect statistics of used -Xjvm-default optionsKT-40300
Fail the build if in MPP plugin no targets configured
Tools. Gradle. JS
KT-38170
Investigate how to improve migration experience from pre 1.4.0 DSL to the new oneKT-39654
Default CSS settings in webpack has priority over user's settingsKT-39842
Kotlin/JS Gradle DSL: peerNpm dependency failsKT-40048
[Gradle, JS] Deprecate kotlin-frontend pluginKT-40067
[Gradle, JS] Public package.json for mixed JS/TS projectKT-40210
Fail the build when Kotlin/JS target is not (properly) configuredKT-40320
Gradle JS: make migration to the new Gradle DSL smoother
Tools. Gradle. Multiplatform
KT-32239
Custom configurations inside Kotlin JVM Gradle projects can't properly resolve multiplatform dependenciesKT-39897
[Commonizer] Fast-pass for library fragments absent for some targets
Tools. J2K
KT-39739
J2K: Access is allowed from event dispatch thread with IW lock only
Tools. kapt
KT-34604
KAPT: Flaky NPE throughorg.jetbrains.kotlin.kapt3.base.ProcessorLoader.doLoadProcessors
KT-36302
TypeTreeVisitor.visitMemberSelect IllegalStateException: node.sym must not be null on JDK 11KT-39876
KAPT: Serialization of classpath structure is incorrect if there are dependencies between types in jar/dir
1.4-M3
Compiler
New Features
KT-23575
Deprecate with replacement and SinceKotlinKT-38652
Do not generate optional annotations to class files on JVMKT-38777
Hide Throwable.addSuppressed member and prefer extension instead
Performance Improvements
KT-38489
Compilation of kotlin html DSL increasingly slowKT-28650
Type inference for argument type is very slow if several interfaces with a type parameter is used as an upper bound of a type parameter
Fixes
KT-15971
Incorrect bytecode generated when inheriting default arguments not from the first supertypeKT-25290
NI: "AssertionError: If original type is SAM type, then candidate should have same type constructor" on out projection of Java classKT-28672
Contracts on calls with implicit receiversKT-30279
Support non-reified type parameters in typeOfKT-31908
NI: CCE on passing lambda to function which accepts vararg SAM interfaceKT-32156
New inference issue with genericsKT-32229
New inference algorithm not taking into account the upper bound classKT-33455
Override equals/hashCode in functional interface wrappersKT-34902
AnalyzerException: Argument 1: expected I, but found R for unsigned types in generic data classKT-35075
AssertionError: "No resolved call for ..." with conditional function referencesKT-35468
Overcome ambiguity between typealias kotlin.Throws and the aliased type kotlin.jvm.ThrowsKT-35494
NI: Multiple duplicate error diagnostics (in IDE popup) with NULL_FOR_NONNULL_TYPEKT-35681
Wrong common supertype between raw and integer literal type leads to unsound codeKT-35937
Error "Declaration has several compatible actuals" on incremental buildKT-36013
Functional interface conversion not happens on a value of functional type with smart cast to a relevant functional typeKT-36045
Do not depend on the order of lambda arguments to coerce result toUnit
KT-36448
NI: fix tests after enabling NI in the compilerKT-36706
Prohibit functional interface constructor referencesKT-36969
Generate @NotNull on instance parameters of Interface$DefaultImpls methodsKT-37058
Incorrect overload resolution ambiguity on callable reference in a conditional expression with new inferenceKT-37120
[FIR] False UNRESOLVED_REFERENCE for public and protected member functions and properties which are declared in object inner classKT-37149
Conversion when generic specified by type argument of SAM typeKT-37249
false TYPE_MISMATCH when When-expression branches have try-catch blocksKT-37341
NI: Type mismatch with combination of lambda and function referenceKT-37436
AME: "Receiver class does not define or inherit an implementation of the resolved method" in runtime on usage of non-abstract method of fun interfaceKT-37510
NI infersjava.lang.Void
from the expression in a lazy property delegate and throws ClassCastException at runtimeKT-37541
SAM conversion with fun interface without a function fails on compiling and IDE analysis in SamAdapterFunctionsScope.getSamConstructor()KT-37574
NI: Type mismatch with Kotlin object extending functional type passed as @FunctionalInterface to JavaKT-37630
NI: ILT suitability in a call is broken if there are CST calculation and calling function's type parametersKT-37665
NI: applicability error due to implicitly inferred Nothing for returning T with expected typeKT-37712
No extension receiver in functional interface created with lambdaKT-37715
NI: VerifyError: Bad type on operand stack with varargs generic value when type is inferredKT-37721
NI: Function reference with vararg parameter treated as array and missing default parameter is rejectedKT-37887
NI: Smart casting for Map doesn't work if the variable is already "smart casted"KT-37914
NI: broken inference for a casting to subtype function within the common constraint system with this subtypeKT-37952
NI: improve lambdas completion through separation the lambdas analysis into several stepsKT-38069
Callable reference adaptation should have dependency on API version 1.4KT-38143
New type inference fails when calling extension function defined on generic type with type arguments nested too deepKT-38156
FIR Metadata generationKT-38197
java.lang.OutOfMemoryError: Java heap space: failed reallocation of scalar replaced objectsKT-38259
NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER for provideDelegateKT-38337
Map delegation fails for inline classesKT-38401
FIR: protected effective visibility is handled unpreciselyKT-38416
FIR: infinite loop in BB coroutine test 'overrideDefaultArgument.kt'KT-38432
FIR: incorrect effective visibility in anonymous objectKT-38434
Implement resolution of suspend-conversion on FE only, but give error if suspend conversion is calledKT-38437
[FIR] String(CharArray) is resolved to java.lang.String constructor instead of kotlin.text.String pseudo-constructorKT-38439
NI: anonymous functions without receiver is allowed if there is an expected type with receiverKT-38473
FIR: ConeIntegerLiteralType in signatureKT-38537
IllegalArgumentException: "marginPrefix must be non-blank string" with raw strings and space as margin prefix in trimMargin() callKT-38604
Implicit suspend conversion on call arguments doesn't work on vararg elementsKT-38680
NSME when calling generic interface method with default parameters overriden with inline class type argumentKT-38681
Wrong bytecode generated when calling generic interface method with default parameters overriden with primitive type argumentKT-38691
NI: overload resolution ambiguity if takeR
and() -> R
, and pass literal lambda, which returnsR
KT-38799
False positive USELESS_CAST for lambda parameterKT-38802
Generated code crashes by ClassCastException when delegating with inline classKT-38853
Backend Internal error: Error type encountered: Unresolved type for nested class used in an annotation argument on an interface methodKT-38890
NI: false negative Type mismatch for values with fun keywordKT-39010
NI: Regression with false-positive smartcast on var of generic typeKT-39013
202, ASM 8: "AnalyzerException: Execution can fall off the end of the code"KT-39260
"AssertionError: Unsigned type expected: Int" in rangeKT-39305
NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER: unable to infer deeply nested type bound when class implements generic interfaceKT-39408
Using unsigned arrays as generics fails in 1.4-M2 with class cast exceptionKT-39533
NI: Wrong overload resolution for methods with SAM converted function reference argumentsKT-39535
NI: Inference fails for the parameters of SAM converted lambdas with type parametersKT-39603
Require explicit override in JVM default compatibility mode on implicit generic specialization of inherited methods in classesKT-39671
Couldn't inline method call 'expectBody'KT-39816
NI:ClassCastException and no IDE error with provideDelegate when DELEGATE_SPECIAL_FUNCTION_MISSING in OIKT-32779
Rewrite at slice
in array access resolution in coroutine inferenceKT-39387
Can't build Kotlin project due to overload resolution ambiguity on flatMap callsKT-39229
NI: resolution to wrong candidate (SAM-type against similar functional type)
Docs & Examples
KT-36245
Document that @kotlin.native.ThreadLocal annotation doesn't work anywhere except in Kotlin/NativeKT-37943
Conflicting overloads in the factory functions sample code in Coding Conventions Page
IDE
New Features
KT-10974
Add Code Style: Import Layout Configuration TableKT-39065
"Join lines" should remove trailing comma on call site
Fixes
KT-9065
Wrong result when move statement through if block with call with lambdaKT-14757
Move statement up breaks code in function parameter listKT-14946
Move statement up/down (with Ctrl+Shift+Up/Down) messes with empty linesKT-15143
Kotlin: Colors&Fonts -> "Enum entry" should use Language Default -> Classes - Static fieldKT-17887
Moving statement (Ctrl/Cmd+Shift+Down) messes with use blockKT-34187
UAST cannot get type of array accessKT-34524
"PSI and index do not match" and IDE freeze with library import fromsquare/workflow
KT-35574
UAST: UBreakExpression in when expression should be UYieldExpressionKT-36801
IDE: Unsupported language version value is represented with "latest stable" in GUIKT-37378
Remove IDE option "Enable new type inference algorithm..." in 1.4KT-38003
"Analyze Data Flow from Here" should work on parameter of abstract methodKT-38173
Reified types do no have extends informationKT-38217
Make Kotlin plugin settings searchableKT-38247
"IncorrectOperationException: Incorrect expression" through UltraLightUtils.kt: inlined string is not escaped before parsingKT-38293
Throwable: "'codestyle.name.kotlin' is not found in java.util.PropertyResourceBundle" at KotlinLanguageCodeStyleSettingsProvider.getConfigurableDisplayName()KT-38407
Drop components from plugin.xmlKT-38443
No error on change in property initializerKT-38521
ISE: Loop in parent structure when converting a DOT_QUALIFIED_EXPRESSION with parent ANNOTATED_EXPRESSIONKT-38571
Rework deprecated EPsKT-38632
Change the code style to official in tests
IDE. Code Style, Formatting
Fixes
KT-24750
Formatter: Minimum blank lines after class header does nothingKT-31169
IDEA settings search fails to find "Tabs and Indents" tab in Kotlin code style settingsKT-35359
Incorrect indent for multiline expression in string templateKT-37420
Add setting to disable inserting empty line between declaration and declaration with commentKT-37891
Formatter inserts empty lines between annotated propertiesKT-38036
Use trailing comma setting does not apply to code example in Settings dialogKT-38568
False positive: weak warning "Missing line break" on -> in when expressionKT-39024
Add option for blank lines before declaration with comment or annotation on separate lineKT-39079
Trailing comma: add base support for call siteKT-39123
OptionAlign 'when' branches in columns
does nothingKT-39180
Move trailing comma settings in Other tab
IDE. Completion
KT-18538
Completion of static members of grand-super java class inserts unnecessary qualifierKT-38445
Fully qualified class name is used instead after insertion ofdelay
method
IDE. Debugger
Fixes
KT-14057
Debugger couldn't step into Reader.readKT-14828
Bad step into/over behavior for functions with default parametersKT-36403
Method breakpoints don't work for librariesKT-36404
Evaluate: "AssertionError: Argument expression is not saved for a SAM constructor"KT-37486
Kotlin plugin keeps reference to stream debugger support classes after stream debugger plugin is disabledKT-38484
Coroutines Debugger: IAE “Requested element count -1 is less than zero.” is thrown by calling dumpCoroutinesKT-38606
Coroutine Debugger: OCE from org.jetbrains.kotlin.idea.debugger.coroutine.proxy.mirror.BaseMirror.isCompatibleKT-39143
NPE on setCurrentStackFrame to Kotlin inner compiled class contentKT-39412
Failed to find Premain-Class manifest attribute when debugging main method with ktorKT-39634
(CoroutineDebugger) Agent doesn't start if using kotlinx-coroutines-core only dependencyKT-39648
Coroutines debugger doesn't see stacktraces in case of the project has kotlinx-coroutines-debug dependency
IDE. Gradle Integration
Performance Improvements
KT-39059
Poor performance ofmodifyDependenciesOnMppModules
Fixes
KT-35921
Gradle Import fails with "Unsupported major.minor version 52.0" on pure Java project in case "Gradle JDK" is lower 1.8 and Kotlin plugin is enabledKT-36673
Gradle Project importing: move ModelBuilders and ModelProviders to kotlin-gradle-tooling jarKT-36792
IDEA 2020.1: Some module->module dependencies in HMPP project are missed after import from GradleKT-37125
Imported modules structure for MPP project is displayed messy in UI in IDEA 2020.1KT-37428
NPE at KotlinFacetSettings.setLanguageLevel() on the first project importKT-38706
IDE Gradle import creates 4 JavaScript modules for MPP source sets with BOTH compiler typeKT-38767
Published hierarchical multiplatform library symbols are unresolved in IDE (master)KT-38842
False positive [INVISIBLE_MEMBER] forinternal
declaration of commonMain called from commonTestKT-39213
IDE: references from MPP project to JavaScript library are unresolved, when project and library are compiled with "both" modeKT-39657
Language settings for intermediate source-sets are lost during import
IDE. Gradle. Script
New Features
KT-34481
*.gradle.kts
: use Intellij IDEA Gradle project sync mechanics for updating script configuration
Performance Improvements
KT-34138
Deadlock inScriptTemplatesFromDependenciesProvider
KT-38875
Deadlock in ScriptClassRootsUpdater.checkInvalidSdks
Fixes
KT-34265
Bogus "build configuration failed, run 'gradle tasks' for more information" message and other issues related to "script dependencies"KT-34444
*.gradle.kts: special storage of all scripts configuration on one fileKT-35153
build.gradle.kts: scripts in removed subproject remain imported, but shouldn'tKT-35573
Request for gradle build script configuration only after explicit click on notificationKT-36675
move .gradle.kts ModelBuilders and ModelProviders to kotlin-gradle-tooling jarKT-37178
build.gradle.kts: Rework the notification for scripts out of projectKT-37631
Unnecessary loading dependencies after opening build.gradle.kts after project import with Gradle 6KT-37863
Scanning dependencies for script definitions takes too long or indefinitely during Gradle importKT-38296
MISSING_DEPENDENCY_SUPERCLASS in the build.gradle.kts editor while Gradle runs OkKT-38541
"Invalid file" exception in ScriptChangeListener.getAnalyzableKtFileForScript()KT-39104
“Gradle Kotlin DSL script configuration is missing” after importing project in IJ201, Gradle 6.3KT-39469
Gradle version is not updated in script dependencies if the version of gradle was changed in gradle-wrapper.propertiesKT-39771
Freeze 30s from org.jetbrains.kotlin.scripting.resolve.ApiChangeDependencyResolverWrapper.resolve on loading script configuration with Gradle 5.6.4
IDE. Inspections and Intentions
New Features
KT-14884
Intention to add missing "class" keyword for enum and annotation top-level declarationsKT-17209
Provide intention to fix platform declaration clash (CONFLICTING_JVM_DECLARATIONS)KT-24522
Suggest to move typealias outside the classKT-30263
Detect redundant conversions of unsigned typesKT-35893
Support Inspection for unnecessary asSequence() callKT-38559
"Change JVM name" (@JvmName) quickfix: improve name suggester for generic functionsKT-38597
Expand Boolean intentionKT-38982
Add "Logger initialized with foreign class" inspectionKT-39131
TrailingCommaInspection: should suggest fixes for call-site without warnings
Fixes
KT-5271
Missing QuickFix for Multiple supertypes availableKT-11865
"Create secondary constructor" quick fix always inserts parameter-less call tothis()
KT-14021
Quickfix to add parameter to function gives strange name to parameterKT-17121
"Implement members" quick fix is not suggestedKT-17368
Don't highlight members annotated with @JsName as unusedKT-20795
"replace explicit parameter with it" creates invalid code in case of overload ambiguitiesKT-22014
Intention "convert lambda to reference" should be available for implicit 'this'KT-22015
Intention "Convert lambda to reference" should be available in spite of the lambda in or out of parenthesesKT-22142
Intentions: "Convert to primary constructor" changes semantics for property with custom setterKT-22878
Empty argument list at the call site of custom function named "suspend" shouldn't be reported as unnecessaryKT-24281
Importing of invoke() from the same file is reported as unused even if it isn'tKT-25050
False-positive inspection "Call replaceable with binary operator" for 'equals'KT-26361
@deprecated "ReplaceWith" quickfix inserts 'this' incorrectly when using function importsKT-27651
'Condition is always true' inspection should not be triggered when the condition has references to a named constantKT-29934
False negativeChange type
quickfix on primary constructor override val parameter when it has wrong typeKT-31682
'Convert lambda to reference' intention inside class with function which return object produces uncompilable codeKT-31760
Implement Abstract Function/Property intentions position generated member improperlyKT-32511
Create class quick fix is not suggested in super type list in case of missing primary constructorKT-32565
False positive "Variable is the same as 'credentials' and should be inlined" with object declared and returned from lambdaKT-32801
False positive "Call on collection type may be reduced" with mapNotNull, generic lambda block and new inferenceKT-33951
ReplaceWith quickfix with unqualified object member call doesn't substitute argument for parameterKT-34378
"Convert lambda to reference" refactoring does not work for suspend functionsKT-34677
False positive "Collection count can be converted to size" withIterable
KT-34696
Wrong 'Redundant qualifier name' for 'MyEnum.values' usageKT-34713
"Condition is always 'false'": quickfix "Delete expression" doesn't removeelse
keyword (may break control flow)KT-35015
ReplaceWith doesn't substitute parameters with argument expressionsKT-35329
Replace 'when' with 'if' intention: do not suggest if 'when' is used as expression and it has no 'else' branchKT-36194
"Add braces to 'for' statement" inserts extra line break and moves the following single-line commentKT-36406
"To ordinary string literal" intention adds unnecessary escapes to characters in template expressionKT-36461
"Create enum constant" quick fix adds after semicolon, if the last entry has a commaKT-36462
"Create enum constant" quick fix doesn't add trailing commaKT-36508
False positive "Replace 'to' with infix form" when 'to' lambda generic type argument is specified explicitlyKT-36930
Intention "Specify type explicitly" adds NotNull annotation when calling java method with the annotationKT-37148
"Remove redundant.let
call doesn't remove extra callsKT-37156
"Unused unary operator" inspection highlighting is hard to seeKT-37173
"Replace with string templates" intention for String.format produces uncompilable string templateKT-37181
Don't show "Remove redundant qualifier name" inspection on qualified Companion imported with star importKT-37214
"Convert lambda to reference" with a labeled "this" receiver failsKT-37256
False positivePlatformExtensionReceiverOfInline
inspection if a platform type value is passed to a nullable receiverKT-37744
"Convert lambda to reference" inspection quick fix create incompilable code when type is inferred from lambda parameterKT-37746
"Redundant suspend modifier" should not be reported for functions with actual keywordKT-37842
"Convert to anonymous function" creates broken code with suspend functionsKT-37908
"Convert to anonymous object" quickfix: false negative when interface has concrete functionsKT-37967
Replace 'invoke' with direct call intention adds unnecessary parenthesisKT-37977
"Replace 'invoke' with direct call" intention: false positive when function is not operatorKT-38062
Reactor Quickfix throwsNotImplementedError
for KotlinKT-38240
False positive redundant semicolon withas
cast andnot
unary operator on next lineKT-38261
Redundant 'let' call removal leaves ?. operator and makes code uncompilableKT-38310
Remove explicit type annotation intention drops 'suspend'KT-38492
False positive "Add import" intention for already imported classKT-38520
SetterBackingFieldAssignmentInspection throws exceptionKT-38649
False positive quickfix "Assignment should be lifted out of when" in presence of smartcastsKT-38677
Invalid psi tree afterLift assigment out of...
KT-38790
"Convert sealed subclass to object" for data classes doesn't remove 'data' keywordKT-38829
'Remove redundant backticks' can be broken with @ in nameKT-38831
'Replace with assignment' can be broken with fast code changeKT-38832
"Remove curly braces" intention may produce CCEKT-38948
False positive quickfix "Make containing function suspend" for anonymous functionKT-38961
"Useless call on collection type" for filterNotNull on non-null array where list return type is expectedKT-39069
Improve TrailingCommaInspectionKT-39151
False positive inspection to replace Java forEach with Kotlin forEach when using ConcurrentHashMap
IDE. JS
KT-39275
Kotlin JS Browser template for kotlin dsl doesn't include index.html
IDE. KDoc
KT-32163
Open Quick Documentation when cursor inside function / constructor brackets
IDE. Navigation
KT-32245
Method in Kotlin class is not listed among implementing methodsKT-33510
There is no gutter icon to navigate fromactual
toexpect
ifexpect
and the correspondingactual
declarations are in the same fileKT-38260
Navigation bar doesn't show directories of files with a single top level Kotlin classKT-38466
Top level functions/properties aren't shown in navigation panel
IDE. Project View
KT-36444
Structure view: add ability to sort by visibilityKT-38276
Structure view: support visibility filter for class properties
IDE. REPL
KT-38454
Kotlin REPL in IntelliJ doesn't take module's JVM target setting into account
IDE. Refactorings
KT-12878
"Change signature" forces line breaks after every parameter declarationKT-30128
Change Signature should move lambda outside of parentheses if the arguments are reordered so that the lambda goes lastKT-35338
Move/rename refactorings mess up code formatting by wrapping linesKT-38449
Extract variable refactoring is broken by NPEKT-38543
Copy can't work to package with escaped packageKT-38627
Rename package refactorings mess up code formatting by wrapping lines
IDE. Run Configurations
KT-34516
Don't suggest incompatible targets in a drop-down list for run test gutter icon in multiplatform projectsKT-38102
DeprecatedMethodException ConfigurationFactory.getId
IDE. Scratch
KT-38455
Kotlin scratch files don't take module's JVM target setting into account
IDE. Script
KT-39791
Kotlin plugin loads VFS in the output directories
IDE. Structural Search
KT-39721
Optimize Kotlin SSR by using the indexKT-39733
Augmented assignment matchingKT-39769
"When expressions" predefined template doesn't match all when expressions
IDE. Wizards
KT-38673
New Project Wizard: multiplatform templates are generated having unsupported Gradle version in a wrapperKT-38810
Incorrect order of build phases in Xcode project from new wizardKT-38952
Remove old new_project_wizardsKT-39503
New Project wizard 1.4+: release kotlinx.html version is added to dependencies with milestone IDE pluginKT-39700
Wizard: group project templates on the first step by the project typeKT-39770
CSS Support in Kotlin wizardsKT-39826
Fix Android app in New Template WizardKT-39843
Change imports in JS/browser wizard
JS. Tools
KT-32273
Kotlin/JS console error on hot reloadKT-39498
Update dukat version in toolchain near to release of 1.4-M3
JavaScript
KT-29916
ImplementtypeOf
on JSKT-35857
Kotlin/JS CLI bundled to IDEA plugin can't compile using IR back-end out of the boxKT-36798
KJS: prohibit using @JsExport on a non-top-level declarationKT-37771
KJS: Generated TypeScript does not recursively export base classes (can fail with generics)KT-38113
Review public API of JS stdlib for IR BEKT-38765
[JS / IR] AssertionError: class EventEmitter: Super class should be any: with nested class extending parent classKT-38768
KJS IR: generate ES2015 (aka ES6) classes
Libraries
New Features
KT-11253
Function to sum long or other numeric property of items in a collectionKT-28933
capitalize() with Locale argument in the JDK stdlibKT-34142
Create SortedMap with Comparator and itemsKT-34506
Add Sequence.flatMap overload that works on IterableKT-36894
Support flatMapIndexed in the Collections APIKT-38480
Introduce experimental annotation for enabling overload resolution by lambda resultKT-38708
minOf/maxOf functions to return min/max value provided by selectorKT-39707
Make some interfaces in stdlib functional
Performance Improvements
KT-23142
toHashSet is suboptimal for inputs with a lot of duplicates
Fixes
KT-21266
Add module-info for standard library artifactsKT-23322
Document 'reduce' operation behavior on empty collectionsKT-28753
Comparing floating point values in array/list operations 'contains', 'indexOf', 'lastIndexOf': IEEE 754 or total orderKT-30083
Annotate KTypeProjection.STAR with JvmField in a compatible wayKT-30084
Annotate functions in KTypeProjection.Companion with JvmStaticKT-31343
Deprecate old String <-> CharArray, ByteArray conversion apiKT-34596
Add some validation to KTypeProjection constructorKT-35978
Review and remove experimental stdlib API status for 1.4KT-38388
DocumentfromIndex
andtoIndex
parametersKT-38854
Gradually change the return type of collection min/max functions to non-nullableKT-39023
Document split(Pattern) extension differences from Pattern.splitKT-39064
Introduce minOrNull and maxOrNull extension functions on collectionsKT-39235
Lift experimental annotation from bit operationsKT-39237
Lift experimental annotation from common StringBuilderKT-39238
Appendable.appendRange - remove nullabilityKT-39239
Lift experimental annotation from String <-> utf8 conversion apiKT-39244
KJS: update polyfills, all or most of them must not be enumerableKT-39330
Migrate declarations from kotlin.dom and kotlin.browser packages to kotlinx.*
Middle-end. IR
KT-31088
need a way to compute fake overrides for pure IRKT-33207
Kotlin/Native: KNPE during deserialization of an inner classKT-33267
Kotlin/Native: Deserialization error for an "inner" extension property imported from a classKT-37255
Make psi2ir aware of declarations provided by compiler plugins
Reflection
KT-22936
Not all things can be changed tocreateType
yet, and nowdefaultType
methods are starting to failKT-32241
Move KType.javaType into stdlib from reflectKT-34344
KType.javaType implementation throws when invoked with a typeOf()KT-38491
IllegalArgumentException when using callBy on function with inline class parameters and default argumentsKT-38881
Add KClass.isFun modifier of functional interfaces to reflection
Tools. Android Extensions
KT-25807
Kotlin extension annotation @parcelize in AIDL returns Object instead of original T
Tools. CLI
KT-30211
Support a way to pass arguments to the underlying JVM in kotlinc batch scripts on WindowsKT-30778
kotlin-compiler.jar contains shaded but not relocated kotlinx.coroutinesKT-38070
Compiler option to bypass prerelease metadata incompatibility errorKT-38413
Add JVM target bytecode version 14
Tools. Compiler Plugins
KT-39274
[KJS / IR] Custom serializer for class without zero argument constructor doesn't compile
Tools. Gradle
KT-25428
Kotlin Gradle Plugin: Use new Gradle API for Lazy tasksKT-34487
Gradle build fails with "Cannot run program "java": error=7, Argument list too longKT-35957
MPP IC fails with "X has several compatible actual declarations" errorKT-38250
Drop support for Gradle versions older than 5.3 in the Kotlin Gradle plugin
Tools. Gradle. JS
New Features
KT-30619
Support NPM transitive dependencies in multi-platform JS targetKT-38286
[Gradle, JS] Error handling on Webpack problems
Fixes
KT-31669
Gradle/JS: rise error when plugin loaded more than onceKT-32531
[Gradle/JS] Add scoped NPM dependenciesKT-34832
[Kotlin/JS] Failed build after webpack run (Karma not found)KT-35194
Kotlin/JS: browserRun fails with "address already in use" when trying to connect to local serverKT-35611
Kotlin Gradle plugin should reportkotlin2js
plugin ID as deprecatedKT-35641
Kotlin Gradle plugin should reportkotlin-dce-js
plugin ID as deprecatedKT-36410
JS: Collect stats about IR backend usageKT-36451
KJS Adding npm dependency breaks Webpack devserver reloadingKT-37258
Kotlin/JS + Gradle: in continuous mode kotlinNpmInstall time to time outputs "ENOENT: no such file or directory" errorKT-38109
[Gradle, JS] Error handling on Karma launcher problemsKT-38331
Add an ability to control generating externals for npm deps individuallyKT-38485
[Gradle, JS] Unable to configure JS compiler with stringKT-38683
Remove possibility to set NPM dependency without versionKT-38990
Support multiple range versions for NPM dependenciesKT-38994
Remove possibility to set NPM dependency with npm(org, name, version)KT-39109
ArithmeticException: "/ by zero" caused by kotlinNodeJsSetup task with enabled gradle caching on WindowsKT-39210
Kotlin/JS: with both JS and MPP modules in the same project Gradle configuration fails onnodejs {}
andbrowser {}
KT-39377
Use standard source-map-loader instead of custom one
Tools. Gradle. Multiplatform
KT-39184
Support publication of Kotlin-distributed libraries with Gradle MetadataKT-39304
Gradle import errorjava.util.NoSuchElementException: Key source set foo is missing in the map
on unused source set
Tools. Gradle. Native
KT-37514
CocoaPods Gradle plugin: Support building from terminal projects for several platformsKT-38440
Make error message about missing Podfile path for cocoapods integration actionable for a userKT-38991
Gradle MPP plugin: Enable parallel in-process execution for K/N compilerKT-39935
Support overriding theKotlinNativeCompile
task sourcesKT-37512
Cocoapods Gradle plugin: Improve error logging for external tools
Tools. J2K
KT-35169
Do not show "Inline local variable" popup during "Cleaning up code" phase of J2KKT-38004
J2K breaks java getter call in java codeKT-38450
J2K should convert Java SAM interfaces to Kotlin fun interfaces
Tools. JPS
KT-27458
The Kotlin standard library is not found in the module graph ... in a non-Kotlin project.KT-29552
Project is completely rebuilt after each gradle sync.
Tools. Scripts
KT-37766
Impossible to apply compiler plugins onto scripts with the new scripting API
Tools. kapt
KT-29355
Provide access to default values for primary constructor properties
1.4-M2
Compiler
New Features
KT-37432
Do not include annotations fields into 'visibility must be explicitly specified' check in api mode
Performance Improvements
KT-27362
Anonymous classes representing function/property references contain rarely used methodsKT-35626
NI: Performance problem with many type parametersKT-36047
Compiler produces if-chain instead of switch when when subject captured as variableKT-36638
Use 'java/lang/StringBuilder.append (C)Ljava/lang/StringBuilder;' when appending single character in JVM_IRKT-37389
Avoid type approximation during generation constraints with EQUALITY kindKT-37392
Avoid substitution and type approximation for simple callsKT-37546
NI: high memory and CPU consumption due to creating useless captured types (storing in approximated types cache, unneeded computations)
Fixes
KT-11265
Factory pattern and overload resolution ambiguityKT-27524
Inline class is boxed when used with suspend modifierKT-27586
ClassCastException occurs if the Result (or any other inline class) is returned from a lambdaKT-30419
Use boxed version of an inline class in return type position for covariant and generic-specialized overridesKT-31163
FIR: consider replacing comparisons with compareTo calls and some additional intrinsicsKT-31585
ClassCastException with derived class delegated to generic class with inline class type argumentKT-31823
NI: Type mismatch with a star projection andUnsafeVariance
KT-33119
Pre-increment for inline class wrapping Int compiles to direct increment instead of inc-implKT-33715
Kotlin/Native: metadata compilerKT-34048
IllegalAccessError when initializing val property in EXACTLY_ONCE lambdaKT-34433
NI: Type mismatch with a star projection andUnsafeVariance
KT-35133
FIR Java: don't set 'isOperator' for methods with non-operator namesKT-35234
ClassCastException with creating an inline class from a function reference of covariant or generic-specialized overrideKT-35406
Generic type implicitly inferred as Nothing with no warningKT-35587
Plain namespace strings in JvmNameResolver.PREDEFINED_STRINGS are prone to namespace changes during jar relocation.KT-36044
NI: premature fixation a type variable if there were nested lambdas (constraint source was the deepest lambda)KT-36057
[FIR] Incorrect smartcastKT-36069
NI: TYPE_MISMATCH caused by incorrect inference to NothingKT-36125
Callable reference resolution ambiguity error is not displayed properly in the IDEKT-36191
IDE locks loading packages and editing file containingtry
keyword inside string templateKT-36222
NI: Improve error message about nullability mismatch for a generic callKT-36249
NI doesn't use upper bound for T of called function during infer return type and as a result infer it toAny?
if the resulting type was intersection typeKT-36345
FIR: record argument mapping for use in back-endKT-36446
NI: "UnsupportedOperationException no descriptor for type constructor of IntegerLiteralType[Int,Long,Byte,Short]" with BuilderInference and delegateKT-36758
[FIR] Unresolved callable reference to member of local classKT-36759
[FIR] Unsupported callable reference resolution for methods with default parametersKT-36762
[FIR] Unresolvedarray.clone()
KT-36764
[FIR] Bug in inference with DefinitelyNotNull typesKT-36816
NI: definitely not-null (T!!) types in invariant positions don't approximate to T inside inference processKT-36819
NI: premature completion of lambdas, which are passed somewhereKT-36850
Incorrect private visibility of sealed class constructorsKT-36856
Throwing exception when there is inheritance in Kotlin from Java class, which contains methods with the same JVM descriptorsKT-36879
Introduce FIR_IDENTICAL in diagnostic testsKT-36881
FIR: completion don't runs for return expressionsKT-36887
[FIR] Unresolved member in nested lambda in initializerKT-36905
[FIR] Unresolved in lambda in default argument positionKT-36953
AssertionError: "Unsigned type expected: null" when there is a range with an unsigned typeKT-37009
FIR: Bound smart-cast lostKT-37027
FIR: Wrong projection on spread + varargs on non-final typesKT-37038
NI: redundant lambda's arrow breaks CST calculation for extension lambdasKT-37043
NI: inference T to Any? if there was elvis between Java out-type and reifiedmaterialize
for this type without out projectionKT-37066
[FIR] Wrong type inference for lambdasKT-37070
[FIR] Unresolved parameters of outer lambda in scope of inner lambdaKT-37087
"IllegalStateException: Can't find method 'invoke()'" for mutable property reference in default value of an inline function parameterKT-37091
[FIR] Wrong inferred type of when-expression if when-argument is not-null-asserted and type is not specifies explicitlyKT-37176
[FIR] Incorrect resolution mode for statements of blockKT-37302
Unexpected conversion:Int
constant inferred toLong
in when expressionKT-37327
FIR: Smartcast problemKT-37343
NI: definitely not null types pre-approximation is inconsistent with OIKT-37380
NI: broken some code with def not null types due to skip needed constraintsKT-37419
NI: UNRESOLVED_REFERENCE_WRONG_RECEIVER is reported in case lambda with receiver is returned fromwhen
expressionKT-37434
Kotlin/JS, Kotlin/Native: fun interfaces: SAM conversion to Kotlin interface is not compiled with RESOLUTION_TO_CLASSIFIERKT-37447
Expression from annotation entry in value parameter inside value parameter should be marked as USED_AS_EXPRESSIONKT-37453
Type arguments not checked to be empty for candidates with no declared parametersKT-37488
[FIR] Incorrect exhaustiveness checking for branches with equals to object that implements sealed classKT-37497
NI: 'super' is not an expression, it can not be used as a receiver for extension functionsKT-37530
NI: instantiation of abstract class via callable reference argument causes run time InstantiationErrorKT-37531
NI: callable reference argument with left hand side type parameter causes frontend exceptionKT-37554
NI: Nothing is inferred incorrectly with elvis returnKT-37579
NI: inconsistent behaviour with OI around implicit invoke convention after safe call with additional implicit receiverKT-37604
"VerifyError: Call to wrong method" in 'invoke' for adapted callable reference to constructor with coercion to UnitKT-37621
NI: type variable is inferred to Nothing if the second branch was Nothing and there was upper bound for a type parameterKT-37626
NI: builder inference with expected type breaks class references resolution for a class with parametersKT-37627
NI: wrong order of the type variable fixation (Nothing? against a call with lambda)KT-37628
NI: wrong approximation of type argument to star projection during common super type calculationKT-37644
NI: appeared exception during incorporation of a captured type into a type variable for elvis resolveKT-37650
NI: it's impossible to infer a type variable with the participation of a wrapped covariant typeKT-37718
False positive unused parameter for @JvmStatic main function in objectKT-37779
ClassCastException: Named argument without spread operator for vararg parameter causes code to crash on runtimeKT-37832
In MPP, subtypes of types defined in legacy libraries, like stdlib, cannot properly resolve on the consumer side receviing bothKT-37861
Capturing an outer class instance in a default parameter of inner class constructor causes VerifyErrorKT-37986
Return value of function reference returning inline class mapped to 'java.lang.Object' is not boxed properlyKT-37998
'!!' operator on safe call of function returning inline class value causes CCE at runtimeKT-38042
Allow kotlin.Result as a return type only if one enabled inline classes explicitlyKT-38134
NI: Type mismatch with a star projection andUnsafeVariance
KT-38298
Inconsistent choice of candidate when both expect/actual are available (affects onlyenableGranularSourceSetMetadata
)KT-38661
NI: "Cannot infer type variable TypeVariable" with lambda with receiverKT-38668
Project with module dependency in KN, build fails with Kotlin 1.3.71 and associated libs but passes with 1.3.61.KT-38857
Class versions V1_5 or less must use F_NEW frames.KT-39113
"AssertionError: Uninitialized value on stack" with EXACTLY_ONCE contract in non-inline function and lambda destructuring
Docs & Examples
KT-35231
toMutableList documentation is vague
IDE
Performance Improvements
KT-30541
EDT Freeze after new Kotlin Script creationKT-35050
Significant freezes due to findSdkAcrossDependencies()KT-37301
Freeze when "Optimize Imports" in KotlinImportOptimizerKT-37466
Invalidate partialBodyResolveCache on OCBKT-37467
PerFileAnalysisCache.fetchAnalysisResultsKT-37993
Do not resolve references if paste code is located in the same originKT-38318
Freezes in IDEA
Fixes
KT-27935
Functional typealias with typealias in type parameters causes UnsupportedOperationException in TypeSignatureMappingKt (IDEA analysis)KT-31668
Complete statement for class declaration: add '()' to supertypeKT-33473
UAST: References to local variable are resolved to UastKotlinPsiVariableKT-34564
Kotlin USimpleNameReferenceExpression for annotation parameter resolves to null for compiled Kotlin classesKT-34973
Light class incorrectly claiming ambiguous method call from Java when one overload is syntheticKT-35801
UAST: UnknownKotlinExpression for valid Kotlin annotated expressionKT-35804
UAST: Annotations missing from catch clause parametersKT-35848
UAST: ClassCastException when trying to invoke UElement for some wrapped PsiElementsKT-36156
Kotlin annotation attributes have blue color whereas white in JavaKT-36275
UAST: UCallExpression::resolve returns null for local function callsKT-36717
Fix failing light class tests after switching plugin to language version 1.4KT-36877
Message bundles for copy paste are missed in 201KT-36907
IDE:-Xuse-ir
setting on facet level does not affect highlightingKT-37133
UAST: Annotating assignment expression sometimes leads to UnknownKotlinExpressionKT-37312
"Implement members" intention put function in the primary constructor if there are unused brackets in classKT-37613
Uast: no parameters in reified methodKT-37933
Rare NPE in ProjectRootsUtilKt.isKotlinBinary [easy fix]KT-38081
Configure kotlin in project produces IDE error "heavy operation and should not be call on AWT thread"KT-38354
HMPP. IDE. Dependency leakage from leaf native to shared native moduleKT-38634
IDE: Error on opening MPP project in 1.3.72 after opening it in 1.4-M2
IDE. Code Style, Formatting
KT-37870
"Remove trailing comma" action stops working after applying and cancelling it
IDE. Completion
KT-36808
Delete Flow.collect from autocompletion list or make it least prioritizedKT-36860
Provide convenient completion of extension functions from objectsKT-37395
Invalid callable reference completion of member extension
IDE. Debugger
KT-34906
Implement Coroutine DebuggerKT-35392
Debugger omits meaningful part of the stacktrace even with disabled filterKT-36215
Coroutines debugger tab is empty in Android StudioKT-37238
Coroutines Debugger: dump creation fails every timeKT-38047
Coroutines Debugger: Assertion failed: “Should be invoked in manager thread, use DebuggerManagerThreadImpl” on moving to source code from suspended coroutine in project without debugger jar in classpathKT-38049
Coroutines Debugger: NPE “null cannot be cast to non-null type com.sun.jdi.ObjectReference” is thrown by calling dumpCoroutinesKT-38487
Any Field Watch interaction causes a MissingResourceException
IDE. Decompiler, Indexing, Stubs
KT-37896
IAE: "Argument for @NotNull parameter 'file' of IndexTodoCacheManagerImpl.getTodoCount must not be null" through KotlinTodoSearcher.processQuery()
IDE. Gradle Integration
KT-33809
Withkotlin.mpp.enableGranularSourceSetsMetadata=true
, IDE misses dependsOn-relation between kotlin and android sourceSets, leading to issues with expect/actual matchingKT-36354
IDE: Gradle import from non-JVM projects: dependency to output artifact is created instead of module dependencyKT-38037
UnsupportedOperationException on sync gradle Kotlin project with at least two multiplatform modules
IDE. Gradle. Script
KT-36763
Drop modification stamp for scripts after project importKT-37237
Script configurations should be loaded during project import in case of errorsKT-38041
Do not request for script configuration after VCS update
IDE. Inspections and Intentions
New Features
KT-3262
Inspection "Inner class could be nested"KT-15723
Add 'Convert to value' quickfix for property containing only getterKT-34026
Add "Remove argument" quick fix for redundant argument in constructor callKT-34332
Add "Remove argument" quick fix for redundant argument in function callKT-34450
Convert function to property
intention should be also displayed onfun
keywordKT-34593
Invert 'if' condition: InvertString.isNotEmpty
should beString.isEmpty
KT-34819
Inspection: report useless elvis "?: return null"KT-37849
SupportReplaceWith
for supertypes call
Performance Improvements
KT-37515
Deadlock
Fixes
KT-12329
"invert if" inserts unnecessary 'continue' for statement inside a loop with 'continue'KT-17615
"Convert parameter to receiver" changesthis
tothis@ < no name provided >
KT-20868
IntelliJ says method from anonymous inner class with inferred interface type is not used even though it isKT-20907
Secondary constructor is marked as unused by IDE when called by typealiasKT-22368
"Convert to block body" intention incorrectly formats closing braceKT-23510
"Remove parameter" quick fix keeps lambda argument when it's out of parenthesesKT-27601
False positive "Unused import directive" for extension function used in KDocKT-28085
"Convert receiver to parameter" introduces incorrect this@class in lambdaKT-30028
"Convert parameter to receiver" introduces wrong 'this' qualifier for extension lambda receiverKT-31601
"Remove redundant let call" changes semantics by introducing multiple safe callsKT-31800
False positive "never used" with function in private val object expressionKT-31912
QF “Convert to anonymous object” do nothing on SAM-interfacesKT-32561
"Property can be declared in constructor" causes another warningKT-32809
Convert parameter to receiver inserts wrong qualifiers for this (when nothing needs to be changed)KT-34371
"Surround with lambda" quickfix is not available for suspend lambda parameters.KT-34640
Replace 'if' with 'when' leads to copy comment line above when from another ifKT-36225
KNPE: CodeInliner.processTypeParameterUsages withReplaceWith
for inline reified generic functionKT-36266
NPE when invoking Lift return out of if/when after intention becomes inapplicable but still beeing shownKT-36296
False negative "Redundant SAM-constructor" with multiple SAM argumentsKT-36367
False negative "Redundant SAM-constructor" for kotlin functionsKT-36368
False negative "Redundant SAM-constructor" for fun interfaces in kotlinKT-36395
False positive "Redundant SAM-constructor" with two java interfaces extending one anotherKT-36411
"Put parameters on separate lines" and "Put parameters on one line" actions do not respect trailing commaKT-36482
"Add JvmOverloads annotation" intention is still suggested for annotation's parametersKT-36686
Implement members quickfix puts the implementation before the data class if it already has a bodyKT-36685
"Convert to a range check" transform hex range to int if it is compared with "Less" or "Greater"KT-36707
False positive redundant companion object on calling companion object membersKT-36735
Inspection 'Replace 'toString' with string template' miss curly braces and generates wrong code for constructor callsKT-36834
Convert use-site targets and usages with convert property to fun intentionKT-37213
"Move to top level" intention does not update imports for extension functionsKT-37496
False positive "Remove redundant backticks" for multiple underscores variable nameKT-37502
False positive "redundant lambda arrow" with inline generic function with reified type in object and anonymous parameter nameKT-37508
"Convert receiver to parameter" breaks code in anonymous objects (this@ < no name provided >)KT-37576
Kotlin InspectionSuppressor not being called for the kotlin's inspectionsKT-37749
"Convert to anonymous object" intention is suggested for Java SAM conversion, but not for KotlinKT-37781
"Add modifier" intention/quickfix works incorrectly with functional interfacesKT-37893
i18n: Incorrect quickfix name "Lift return out of '"
IDE. KDoc
KT-37361
Support for showing rendered doc comments in editor
IDE. Libraries
KT-36276
IDE: references to declarations in JavaScript KLib dependency are unresolvedKT-37562
IDE: references to JavaScript KLib dependency are unresolved, when project and library are compiled with "both" mode
IDE. Navigation
KT-18472
UI lockup on find usagesKT-18619
Find Usages of element used via import alias does not show actual usage locationKT-34088
Navigate | Implementations action doesn't show implementations of Java methods in Kotlin files if method has parameters referring to generic typeKT-35006
IDE: "Navigate to inline function call site" from stack trace for nested inline call navigates to outer inline callKT-36138
628 second freeze when doing Find Usages on data class propertyKT-36218
Show Kotlin file members in navigation barKT-37494
AnnotatedElementsSearch unable to find annotated property accessor
IDE. Project View
KT-32886
Project tool window: Show Visibility Icons does nothing for Kotlin classesKT-37632
IDE error on project structure opening
IDE. Refactorings
Performance Improvements
KT-37801
Renaming private property with common name is very slow
Fixes
KT-22733
Refactor / Inline Function: fun with type parameter: KNPE at CodeInliner.processTypeParameterUsages()KT-27389
MPP: Refactoring "Move Class" does not change the package declarationKT-29870
Inline variable doesn't handle 'when' subject val correctlyKT-33045
Cover Move Refactoring by statistics (FUS)KT-36071
Refactoring: Move top declaration implementation refactoringKT-36072
Empty files are removed on Refactor/Move action with turned off "Delete empty source files" optionKT-36114
java.lang.NoClassDefFoundError exception on Refactor/Move of kotlin function if it is referenced in javaKT-36129
java.lang.Throwable: Invalid file exception occurs on Refactor/Move of class from kotlin scriptKT-36382
Move file refactoring breaks ktor application configKT-36504
"Extract property" suggests potentially invalid name for new propertyKT-37637
KotlinChangeSignatureUsageProcessor broke Change Signature in Python pluginKT-37797
Useless "Value for new paramater" step in 'Update usages to reflect signature changes' for method with default parameter valueKT-37822
Improve message "Inline all references and remove the kind"KT-38348
UL methods return signature without generic type parametersKT-38527
Move nested class to upper level fails silently: MissingResourceException
IDE. Script
KT-37765
NCDFE KJvmCompiledModuleInMemory on running*.main.kts
script
IDE. Tests Support
KT-36716
Withkotlin.gradle.testing.enabled=true
, gradle console output gets extra ijLog messagesKT-36910
There are no Run/Debug actions in context menu for non-JVM platform-specific test resultsKT-37037
[JS, Debug] Node.JS test debug doesn't stop on breakpoints
IDE. Wizards
New Features
KT-36150
New Project Wizard: provide a way to connect with "dependsOn" relation the added project modulesKT-36179
New Project Wizard: it's impossible to make a JVM target friendly to Java code in a multiplatform project
Fixes
KT-35583
New Project wizard: don't suggest build systems which cannot be usedKT-35585
New Project wizard: remember choices which have sense for many projectsKT-35691
New Project wizard: artifact and group values are effectively ignoredKT-35693
New Project wizard creates pom.xml / build.gradle referring to release Kotlin version onlyKT-36136
New Project Wizard: generated projects are missing m2 Gradle repositoryKT-36137
New Project Wizard: "multiplatform" shall be written as a single word, without the capital P in the middleKT-36155
New Project Wizard: show warning "Multiplatform project cannot be generated" only for MPP projectsKT-36162
New Project Wizard: make the error messages in modules editor actionableKT-36163
New Project Wizard: remove trailing spaces in Android SDK Path automaticallyKT-36166
New Project Wizard: addition of Android target into a multiplatform project doesn't add a necessary minimal Android configurationKT-36169
New Project Wizard: Android-related projects failed to buildKT-36176
New Project Wizard: module templates doesn't work for multiplatform projectsKT-36177
New Project Wizard: it's impossible to add more than one target of JVM kind to a multiplatform projectKT-36180
New Project Wizard: it's impossible to set target JVM version for a JVM moduleKT-36226
New Project Wizard: add Mobile Android/iOS project templateKT-36267
New Project Wizard: flatten JVM targets list for multiplatform projectsKT-36328
New Project wizard fails for certain templates with AE: "Wrong line separators" at KotlinFormattingModelBuilder.createModel()KT-37599
New Project Wizard: Open Kotlin Wizard via hyperlinkKT-37667
New project wizard: implement new UI designKT-37674
Kotlin version in build files includes the IDEA versionKT-38061
New Project wizard 1.4: do not allow choosing build system if corresponding IJ plugin is disabledKT-38567
New Project wizard 1.4+: Improve processing case when project with required path already existsKT-38579
New Project wizard 1.4+: multiplatform mobile application: build fails on lint task: Configuration with name 'compileClasspath' not foundKT-38929
New project wizard: update libraries in project template according to kotlin IDE plugin versionKT-38417
Enable new project wizard by-default
JS. Tools
KT-36484
KotlinJS, MPP: Compilation throws "TypeError: b is not a function" only in production mode
JavaScript
KT-31126
Invalid JS constructor call (primary ordinary -> secondary external)KT-35966
Make @JsExport annotation usable in common codeKT-37128
KJS: StackOverflowException when using reified recursive bound for type parameterKT-37163
KJS: NullPointerException on using intersection type as a reified oneKT-37418
SupportAssociatedObjectKey
andfindAssociatedObject
in JS IR BE
Libraries
New Features
KT-8658
Add property delegates which call get/set on the given KProperty instance, e.g. a property referenceKT-12448
Make@Suppress
applicable for type parametersKT-22932
String.format should support null localeKT-23514
assertFailsWith should link unexpected exception as causeKT-23737
JS & MPP: Support exception cause and addSuppressedKT-25651
Add shuffle() to Array, ByteArray, IntArray, etc to match MutableListKT-26494
Create an interface with provideDelegate()KT-27729
InheritReadWriteProperty
fromReadOnlyProperty
KT-28290
Add the onEach extension function to the ArrayKT-29182
SIZE_BYTES/BITS for Float and DoubleKT-30372
Add associateWith to ArrayKT-33906
Add vararg overloads for maxOf/minOf functionsKT-34161
Array.contentEquals/contentHashCode/contentToString should allow null array receiver and argumentKT-35851
Add setOfNotNull functionKT-36866
reduceIndexedOrNullKT-36955
stdlib: Reverse range and sortDescending rangeKT-37161
Add #onEachIndexed similar to #forEachIndexedKT-37603
Throwable.stackTraceToString: string with detailed information about exceptionKT-37751
Implement shuffled() method SequencesKT-37804
Add 'fail' in kotlin-test that allows to specify causeKT-37839
StringBuilder.appendLine in stdlib-commonKT-37910
Support Media Source Extension (MSE) and Encrypted Media Extensions (EME) in Kotlin/JsKT-38044
Common Throwable.printStackTrace
Performance Improvements
KT-37416
readLine() is very slow
Fixes
KT-13887
Double/Float companion values such as NaN should be constantsKT-14119
String.toBoolean()
should beString?.toBoolean()
KT-16529
Names of KProperty's type parameters are inconsistent with ReadOnlyProperty/ReadWritePropertyKT-36356
Specify which element Iterable.distinctBy(selector) retainsKT-38060
runningFold and runningReduce instead of scanReduce
Reflection
KT-29969
Support optional vararg parameter inKCallable.callBy
KT-37707
"IllegalStateException: superInterface.classLoader must not be null" on class, which implements "AutoCloaseable" interface, "isAccessible" property changing
Tools. CLI
KT-37090
file does not exist:C:\Users\NK\DOWNLO~1\kotlin-compiler-1.3.61\kotlinc\bin\..\lib\kotlin-compiler.jar" from standalone compiler on Windows
Tools. Gradle
KT-35447
Warnings should be piped to stderr when using allWarningsAsErrors = trueKT-35942
User test Gradle source set code cannot reach out internal members from the production codeKT-36019
Implement Gradle DSL for explicit API mode
Tools. Gradle. JS
New Features
KT-32017
Kotlin/JS in MPP: support changing the generated JS file name in Gradle DSLKT-32721
[Gradle, JS] CSS Support for browserKT-36843
[Gradle, JS, IR] Configure JS Compiler Type through DSLKT-37207
Allow to use npm dependency from a local directoryKT-38056
[Gradle, JS] Group tasks by browser and node
Fixes
KT-32466
kotlinNpmResolve fails in the case of composite buildKT-34468
Consider custom versions while parsing yarn.lockKT-36489
[Gradle, JS, IR]: Correct naming for both compilersKT-36784
Kotlin. JS. MPP – Cannot find project :js when using Gradle composite buildsKT-36864
KJS. Composite build require JS plugin in root projectKT-37240
KJS. Nondeterministic execution order for webpack scripts (from folder 'webpack.config.d')KT-37582
Kotlin/JS: KotlinWebpack non-nullable properties are shown as nullable in Gradle configurationKT-37587
KJS. Karma ignore dynamically created webpack patchesKT-37635
[Gradle, JS] Webpack devtool provide enum for only 2 variantsKT-37636
[Gradle, JS] Extract package.json from klibKT-37762
[Gradle, JS] Actualize Node and Yarn versions in 1.4KT-37988
[Gradle, JS] Bump NPM versions on 1.4-M2KT-38051
[Gradle, JS] browserDistribution doesn't provide outputsKT-38519
JS Compiler per project without additional import
Tools. Gradle. Multiplatform
KT-36674
allMetadataJar
task fails if there is an empty intermediate source set in a multiplatform project with native targetsKT-38746
In HMPP, compilation of a shared-native source set could be mistakenly disabledKT-39094
Provide a way to pass custom JVM args to commonizer from Gradle
Tools. Gradle. Native
KT-25887
Kotlin Native gradle build fail withendorsed is not supported. Endorsed standards and standalone APIs
on jdk > 8 & CLionKT-36721
Deduce a fully qualified unique_name in klib manifest from something like group nameKT-37730
Native part of multiplatform build fails with "unresolved reference" errors if there is a local and external module with the same nameKT-38174
Kotlin/Native: Disable platform libraries generation at the user side by default
Tools. J2K
Fixes
KT-34965
Convert function reference copied from function callKT-35593
New J2K: method's names don't change between functions declared in Number.java and Number.ktKT-35897
J2K converts private enum constructors to internal constructors and produces NON_PRIVATE_CONSTRUCTOR_IN_ENUM errorKT-36088
J2K: StackOverflowError when trying to convert Java class with recursive type boundKT-36149
J2K: PsiInvalidElementAccessException: Element class com.intellij.psi.impl.source.tree.CompositeElement of type DOT_QUALIFIED_EXPRESSIONKT-36152
J2K: RuntimeException: Couldn't get containingKtFile for ktElementKT-36159
J2K: ClassCastException if constructor contains a super() call and class extends from Kotlin classKT-36190
J2K: Wrong property name generation when getter for non-boolean value starts with 'is'KT-36891
j2k: Fail with java.lang.NoClassDefFoundError when converting arrayKT-37052
new J2K: Java private function is converted toprivate open
top-level functionKT-37620
new J2K: IndexOutOfBoundsException (DefaultArgumentsConversion.applyToElement) with overloaded function with vararg parameterKT-37919
new J2K: Redundant line feeds when converting function
Tools. JPS
KT-37159
A Typo (forgotten space) in build output in Circular dependencies warning description
Tools. Scripts
KT-30086
ThreadDeath when running kotlin scripts using jsr223KT-37558
Scripts: implicit receivers don't work correctly when using CompiledScriptJarsCacheKT-37823
Consecutive invocations of main.kts throw a KotlinReflectionNotSupportedError
1.4-M1
Compiler
New Features
KT-4240
Type inference possible improvements: analyze lambda with expected type from the outer callKT-7304
Smart-casts and generic calls with multiple bounds on type parametersKT-7745
Support named arguments in their own position even if the result appears as mixedKT-7770
SAM for Kotlin classesKT-8834
Support function references with default values as other function typesKT-10930
Expected type isn't taken into account for delegated propertiesKT-11723
Support coercion to Unit in callable reference resolutionKT-14416
Support of @PolymorphicSignature in Kotlin compilerKT-16873
Support COERSION_TO_UNIT for suspend lambdasKT-17643
Inferring type of Pair based on known Map typeKT-19869
Support function references to functions with vararg if expected type ends with repeated vararg element typeKT-21178
Prohibit access of protected members inside public inline membersKT-21368
Improve type inferenceKT-25866
Iterable.forEach does not accept functions that return non-Unit valuesKT-26165
Support VarHandle in JVM codegenKT-27582
Allow contracts on final non-override membersKT-28298
Allow references to generic (reified) type parameters in contractsKT-31230
Refine rules for allowed Array-based class literals on different platforms: allowArray::class
everywhere, disallowArray<...>::class
on non-JVMKT-31244
Choose Java field during overload resolution with a pure Kotlin propertyKT-31734
Empty parameter list required on Annotations of function typesKT-33990
Type argument isn't checked during resolution partKT-33413
Allow 'break' and 'continue' in 'when' statement to point to innermost surrounding loopKT-34743
Support trailing comma in the compilerKT-34847
Lift restrictions fromkotlin.Result
Fixes
KT-2869
Incorrect resolve with 'unsafe call error' and genericsKT-3630
Extension property (generic function type) does not workKT-3668
Infer type parameters for extension 'get' in delegated propertyKT-3850
Receiver check fails when type parameter has another parameter as a boundKT-3884
Generic candidate with contradiction is preferred over matching global functionKT-4625
Poor error highlighting when assigning not matched type to index operatorKT-5449
Wrong resolve when functions differ only in the nullability of generic typeKT-5606
"Type mismatch" in Java constructor call with SAM lambda andvararg
parameterKT-6005
Type inference problem in sam constructorsKT-6591
Overloaded generic extension function call with null argument resolved incorrectlyKT-6812
Type inference fails when passing a null instead of a generic typeKT-7298
Bogus type inference error in generic method call translated from JavaKT-7301
Type inference error in Kotlin code translated from JavaKT-7333
Type inference fails with star-projections in code translated from JavaKT-7363
Kotlin code with star-projections translated from Java does not typecheckKT-7378
3-dimension array type inference failKT-7410
Call resolution error appears only after adding non-applicable overloadKT-7420
Type inference sometimes infers less specific type than in JavaKT-7758
Type of lambda can't be inferedKT-8218
Wrong 'equals' for generic types with platform type and error typeKT-8265
Non-typesafe program is compiled without errorsKT-8637
Useless diagnostics for type parameters with unsafe nullabilityKT-8966
Smart casts don't work with implicit receiver and extension on type parameter with boundsKT-10265
Type inference problem when using sealed class and interfacesKT-10364
Call completeCall on variable before invoke resolutionKT-10612
java.util.Comparator.comparing type inferenceKT-10628
Wrong type mismatch with star projection of inner class inside use-site projected typeKT-10662
Smartcast with not-null assertionKT-10681
Explicit type arguments not taken into account when determining applicable overloads of a generic functionKT-10755
Not "least" common super-type is selected for nested 'if' result in presence of multiple inheritanceKT-10929
Type inference based on receiver type doesn't work for delegated properties in some casesKT-10962
Wrong resolution when argument has unstable DataFlowValueKT-11108
RxJava failed platform type inferenceKT-11137
Java synthetic property does not function for a type with projectionKT-11144
UninferredParameterTypeConstructor exception during buildKT-11184
Type inference failed for combination of safe-call, elvis, HashSet and emptySetKT-11218
Type inference incorrectly infers nullable type for t...