CHANGELOG

1.4-M3

Compiler

New Features

  • KT-23575 Deprecate with replacement and SinceKotlin
  • KT-38652 Do not generate optional annotations to class files on JVM
  • KT-38777 Hide Throwable.addSuppressed member and prefer extension instead

Performance Improvements

  • KT-38489 Compilation of kotlin html DSL increasingly slow
  • KT-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 supertype
  • KT-25290 NI: “AssertionError: If original type is SAM type, then candidate should have same type constructor” on out projection of Java class
  • KT-28672 Contracts on calls with implicit receivers
  • KT-30279 Support non-reified type parameters in typeOf
  • KT-31908 NI: CCE on passing lambda to function which accepts vararg SAM interface
  • KT-32156 New inference issue with generics
  • KT-32229 New inference algorithm not taking into account the upper bound class
  • KT-33455 Override equals/hashCode in functional interface wrappers
  • KT-34902 AnalyzerException: Argument 1: expected I, but found R for unsigned types in generic data class
  • KT-35075 AssertionError: “No resolved call for ...” with conditional function references
  • KT-35468 Overcome ambiguity between typealias kotlin.Throws and the aliased type kotlin.jvm.Throws
  • KT-35494 NI: Multiple duplicate error diagnostics (in IDE popup) with NULL_FOR_NONNULL_TYPE
  • KT-35681 Wrong common supertype between raw and integer literal type leads to unsound code
  • KT-35937 Error “Declaration has several compatible actuals” on incremental build
  • KT-36013 Functional interface conversion not happens on a value of functional type with smart cast to a relevant functional type
  • KT-36045 Do not depend on the order of lambda arguments to coerce result to Unit
  • KT-36448 NI: fix tests after enabling NI in the compiler
  • KT-36706 Prohibit functional interface constructor references
  • KT-36969 Generate @NotNull on instance parameters of Interface$DefaultImpls methods
  • KT-37058 Incorrect overload resolution ambiguity on callable reference in a conditional expression with new inference
  • KT-37120 [FIR] False UNRESOLVED_REFERENCE for public and protected member functions and properties which are declared in object inner class
  • KT-37149 Conversion when generic specified by type argument of SAM type
  • KT-37249 false TYPE_MISMATCH when When-expression branches have try-catch blocks
  • KT-37341 NI: Type mismatch with combination of lambda and function reference
  • KT-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 interface
  • KT-37510 NI infers java.lang.Void from the expression in a lazy property delegate and throws ClassCastException at runtime
  • KT-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 Java
  • KT-37630 NI: ILT suitability in a call is broken if there are CST calculation and calling function's type parameters
  • KT-37665 NI: applicability error due to implicitly inferred Nothing for returning T with expected type
  • KT-37712 No extension receiver in functional interface created with lambda
  • KT-37715 NI: VerifyError: Bad type on operand stack with varargs generic value when type is inferred
  • KT-37721 NI: Function reference with vararg parameter treated as array and missing default parameter is rejected
  • KT-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 subtype
  • KT-37952 NI: improve lambdas completion through separation the lambdas analysis into several steps
  • KT-38069 Callable reference adaptation should have dependency on API version 1.4
  • KT-38143 New type inference fails when calling extension function defined on generic type with type arguments nested too deep
  • KT-38156 FIR Metadata generation
  • KT-38197 java.lang.OutOfMemoryError: Java heap space: failed reallocation of scalar replaced objects
  • KT-38259 NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER for provideDelegate
  • KT-38337 Map delegation fails for inline classes
  • KT-38401 FIR: protected effective visibility is handled unprecisely
  • KT-38416 FIR: infinite loop in BB coroutine test ‘overrideDefaultArgument.kt’
  • KT-38432 FIR: incorrect effective visibility in anonymous object
  • KT-38434 Implement resolution of suspend-conversion on FE only, but give error if suspend conversion is called
  • KT-38437 [FIR] String(CharArray) is resolved to java.lang.String constructor instead of kotlin.text.String pseudo-constructor
  • KT-38439 NI: anonymous functions without receiver is allowed if there is an expected type with receiver
  • KT-38473 FIR: ConeIntegerLiteralType in signature
  • KT-38537 IllegalArgumentException: “marginPrefix must be non-blank string” with raw strings and space as margin prefix in trimMargin() call
  • KT-38604 Implicit suspend conversion on call arguments doesn't work on vararg elements
  • KT-38680 NSME when calling generic interface method with default parameters overriden with inline class type argument
  • KT-38681 Wrong bytecode generated when calling generic interface method with default parameters overriden with primitive type argument
  • KT-38691 NI: overload resolution ambiguity if take R and () -> R, and pass literal lambda, which returns R
  • KT-38799 False positive USELESS_CAST for lambda parameter
  • KT-38802 Generated code crashes by ClassCastException when delegating with inline class
  • KT-38853 Backend Internal error: Error type encountered: Unresolved type for nested class used in an annotation argument on an interface method
  • KT-38890 NI: false negative Type mismatch for values with fun keyword
  • KT-39010 NI: Regression with false-positive smartcast on var of generic type
  • KT-39013 202, ASM 8: “AnalyzerException: Execution can fall off the end of the code”
  • KT-39260 “AssertionError: Unsigned type expected: Int” in range
  • KT-39305 NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER: unable to infer deeply nested type bound when class implements generic interface
  • KT-39408 Using unsigned arrays as generics fails in 1.4-M2 with class cast exception
  • KT-39533 NI: Wrong overload resolution for methods with SAM converted function reference arguments
  • KT-39535 NI: Inference fails for the parameters of SAM converted lambdas with type parameters
  • KT-39603 Require explicit override in JVM default compatibility mode on implicit generic specialization of inherited methods in classes
  • KT-39671 Couldn't inline method call ‘expectBody’
  • KT-39816 NI:ClassCastException and no IDE error with provideDelegate when DELEGATE_SPECIAL_FUNCTION_MISSING in OI
  • KT-32779 Rewrite at slice in array access resolution in coroutine inference
  • KT-39387 Can't build Kotlin project due to overload resolution ambiguity on flatMap calls
  • KT-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/Native
  • KT-37943 Conflicting overloads in the factory functions sample code in Coding Conventions Page

IDE

New Features

  • KT-10974 Add Code Style: Import Layout Configuration Table
  • KT-39065 “Join lines” should remove trailing comma on call site

Fixes

  • KT-9065 Wrong result when move statement through if block with call with lambda
  • KT-14757 Move statement up breaks code in function parameter list
  • KT-14946 Move statement up/down (with Ctrl+Shift+Up/Down) messes with empty lines
  • KT-15143 Kotlin: Colors&Fonts -> “Enum entry” should use Language Default -> Classes - Static field
  • KT-17887 Moving statement (Ctrl/Cmd+Shift+Down) messes with use block
  • KT-34187 UAST cannot get type of array access
  • KT-34524 “PSI and index do not match” and IDE freeze with library import from square/workflow
  • KT-35574 UAST: UBreakExpression in when expression should be UYieldExpression
  • KT-36801 IDE: Unsupported language version value is represented with “latest stable” in GUI
  • KT-37378 Remove IDE option “Enable new type inference algorithm...” in 1.4
  • KT-38003 “Analyze Data Flow from Here” should work on parameter of abstract method
  • KT-38173 Reified types do no have extends information
  • KT-38217 Make Kotlin plugin settings searchable
  • KT-38247 “IncorrectOperationException: Incorrect expression” through UltraLightUtils.kt: inlined string is not escaped before parsing
  • KT-38293 Throwable: “‘codestyle.name.kotlin’ is not found in java.util.PropertyResourceBundle” at KotlinLanguageCodeStyleSettingsProvider.getConfigurableDisplayName()
  • KT-38407 Drop components from plugin.xml
  • KT-38443 No error on change in property initializer
  • KT-38521 ISE: Loop in parent structure when converting a DOT_QUALIFIED_EXPRESSION with parent ANNOTATED_EXPRESSION
  • KT-38571 Rework deprecated EPs
  • KT-38632 Change the code style to official in tests

IDE. Code Style, Formatting

Fixes

  • KT-24750 Formatter: Minimum blank lines after class header does nothing
  • KT-31169 IDEA settings search fails to find “Tabs and Indents” tab in Kotlin code style settings
  • KT-35359 Incorrect indent for multiline expression in string template
  • KT-37420 Add setting to disable inserting empty line between declaration and declaration with comment
  • KT-37891 Formatter inserts empty lines between annotated properties
  • KT-38036 Use trailing comma setting does not apply to code example in Settings dialog
  • KT-38568 False positive: weak warning “Missing line break” on -> in when expression
  • KT-39024 Add option for blank lines before declaration with comment or annotation on separate line
  • KT-39079 Trailing comma: add base support for call site
  • KT-39123 Option Align 'when' branches in columns does nothing
  • KT-39180 Move trailing comma settings in Other tab

IDE. Completion

  • KT-18538 Completion of static members of grand-super java class inserts unnecessary qualifier
  • KT-38445 Fully qualified class name is used instead after insertion of delay method

IDE. Debugger

Fixes

  • KT-14057 Debugger couldn't step into Reader.read
  • KT-14828 Bad step into/over behavior for functions with default parameters
  • KT-36403 Method breakpoints don't work for libraries
  • KT-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 disabled
  • KT-38484 Coroutines Debugger: IAE “Requested element count -1 is less than zero.” is thrown by calling dumpCoroutines
  • KT-38606 Coroutine Debugger: OCE from org.jetbrains.kotlin.idea.debugger.coroutine.proxy.mirror.BaseMirror.isCompatible
  • KT-39143 NPE on setCurrentStackFrame to Kotlin inner compiled class content
  • KT-39412 Failed to find Premain-Class manifest attribute when debugging main method with ktor
  • KT-39634 (CoroutineDebugger) Agent doesn't start if using kotlinx-coroutines-core only dependency
  • KT-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 of modifyDependenciesOnMppModules

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 enabled
  • KT-36673 Gradle Project importing: move ModelBuilders and ModelProviders to kotlin-gradle-tooling jar
  • KT-36792 IDEA 2020.1: Some module->module dependencies in HMPP project are missed after import from Gradle
  • KT-37125 Imported modules structure for MPP project is displayed messy in UI in IDEA 2020.1
  • KT-37428 NPE at KotlinFacetSettings.setLanguageLevel() on the first project import
  • KT-38706 IDE Gradle import creates 4 JavaScript modules for MPP source sets with BOTH compiler type
  • KT-38767 Published hierarchical multiplatform library symbols are unresolved in IDE (master)
  • KT-38842 False positive [INVISIBLE_MEMBER] for internal declaration of commonMain called from commonTest
  • KT-39213 IDE: references from MPP project to JavaScript library are unresolved, when project and library are compiled with “both” mode
  • KT-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 in ScriptTemplatesFromDependenciesProvider
  • 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 file
  • KT-35153 build.gradle.kts: scripts in removed subproject remain imported, but shouldn't
  • KT-35573 Request for gradle build script configuration only after explicit click on notification
  • KT-36675 move .gradle.kts ModelBuilders and ModelProviders to kotlin-gradle-tooling jar
  • KT-37178 build.gradle.kts: Rework the notification for scripts out of project
  • KT-37631 Unnecessary loading dependencies after opening build.gradle.kts after project import with Gradle 6
  • KT-37863 Scanning dependencies for script definitions takes too long or indefinitely during Gradle import
  • KT-38296 MISSING_DEPENDENCY_SUPERCLASS in the build.gradle.kts editor while Gradle runs Ok
  • KT-38541 “Invalid file” exception in ScriptChangeListener.getAnalyzableKtFileForScript()
  • KT-39104 “Gradle Kotlin DSL script configuration is missing” after importing project in IJ201, Gradle 6.3
  • KT-39469 Gradle version is not updated in script dependencies if the version of gradle was changed in gradle-wrapper.properties
  • KT-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 declarations
  • KT-17209 Provide intention to fix platform declaration clash (CONFLICTING_JVM_DECLARATIONS)
  • KT-24522 Suggest to move typealias outside the class
  • KT-30263 Detect redundant conversions of unsigned types
  • KT-35893 Support Inspection for unnecessary asSequence() call
  • KT-38559 “Change JVM name” (@JvmName) quickfix: improve name suggester for generic functions
  • KT-38597 Expand Boolean intention
  • KT-38982 Add “Logger initialized with foreign class” inspection
  • KT-39131 TrailingCommaInspection: should suggest fixes for call-site without warnings

Fixes

  • KT-5271 Missing QuickFix for Multiple supertypes available
  • KT-11865 “Create secondary constructor” quick fix always inserts parameter-less call to this()
  • KT-14021 Quickfix to add parameter to function gives strange name to parameter
  • KT-17121 “Implement members” quick fix is not suggested
  • KT-17368 Don't highlight members annotated with @JsName as unused
  • KT-20795 “replace explicit parameter with it” creates invalid code in case of overload ambiguities
  • KT-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 parentheses
  • KT-22142 Intentions: “Convert to primary constructor” changes semantics for property with custom setter
  • KT-22878 Empty argument list at the call site of custom function named “suspend” shouldn't be reported as unnecessary
  • KT-24281 Importing of invoke() from the same file is reported as unused even if it isn't
  • KT-25050 False-positive inspection “Call replaceable with binary operator” for ‘equals’
  • KT-26361 @Deprecated “ReplaceWith” quickfix inserts ‘this’ incorrectly when using function imports
  • KT-27651 ‘Condition is always true’ inspection should not be triggered when the condition has references to a named constant
  • KT-29934 False negative Change type quickfix on primary constructor override val parameter when it has wrong type
  • KT-31682 ‘Convert lambda to reference’ intention inside class with function which return object produces uncompilable code
  • KT-31760 Implement Abstract Function/Property intentions position generated member improperly
  • KT-32511 Create class quick fix is not suggested in super type list in case of missing primary constructor
  • KT-32565 False positive “Variable is the same as ‘credentials’ and should be inlined” with object declared and returned from lambda
  • KT-32801 False positive “Call on collection type may be reduced” with mapNotNull, generic lambda block and new inference
  • KT-33951 ReplaceWith quickfix with unqualified object member call doesn't substitute argument for parameter
  • KT-34378 “Convert lambda to reference” refactoring does not work for suspend functions
  • KT-34677 False positive “Collection count can be converted to size” with Iterable
  • KT-34696 Wrong ‘Redundant qualifier name’ for ‘MyEnum.values’ usage
  • KT-34713 “Condition is always ‘false’”: quickfix “Delete expression” doesn't remove else keyword (may break control flow)
  • KT-35015 ReplaceWith doesn't substitute parameters with argument expressions
  • KT-35329 Replace ‘when’ with ‘if’ intention: do not suggest if ‘when’ is used as expression and it has no ‘else’ branch
  • KT-36194 “Add braces to ‘for’ statement” inserts extra line break and moves the following single-line comment
  • KT-36406 “To ordinary string literal” intention adds unnecessary escapes to characters in template expression
  • KT-36461 “Create enum constant” quick fix adds after semicolon, if the last entry has a comma
  • KT-36462 “Create enum constant” quick fix doesn't add trailing comma
  • KT-36508 False positive “Replace ‘to’ with infix form” when ‘to’ lambda generic type argument is specified explicitly
  • KT-36930 Intention “Specify type explicitly” adds NotNull annotation when calling java method with the annotation
  • KT-37148 "Remove redundant .let call doesn't remove extra calls
  • KT-37156 “Unused unary operator” inspection highlighting is hard to see
  • KT-37173 “Replace with string templates” intention for String.format produces uncompilable string template
  • KT-37181 Don't show “Remove redundant qualifier name” inspection on qualified Companion imported with star import
  • KT-37214 “Convert lambda to reference” with a labeled “this” receiver fails
  • KT-37256 False positive PlatformExtensionReceiverOfInline inspection if a platform type value is passed to a nullable receiver
  • KT-37744 “Convert lambda to reference” inspection quick fix create incompilable code when type is inferred from lambda parameter
  • KT-37746 “Redundant suspend modifier” should not be reported for functions with actual keyword
  • KT-37842 “Convert to anonymous function” creates broken code with suspend functions
  • KT-37908 “Convert to anonymous object” quickfix: false negative when interface has concrete functions
  • KT-37967 Replace ‘invoke’ with direct call intention adds unnecessary parenthesis
  • KT-37977 “Replace ‘invoke’ with direct call” intention: false positive when function is not operator
  • KT-38062 Reactor Quickfix throws NotImplementedError for Kotlin
  • KT-38240 False positive redundant semicolon with as cast and not unary operator on next line
  • KT-38261 Redundant ‘let’ call removal leaves ?. operator and makes code uncompilable
  • KT-38310 Remove explicit type annotation intention drops ‘suspend’
  • KT-38492 False positive “Add import” intention for already imported class
  • KT-38520 SetterBackingFieldAssignmentInspection throws exception
  • KT-38649 False positive quickfix “Assignment should be lifted out of when” in presence of smartcasts
  • KT-38677 Invalid psi tree after Lift assigment out of...
  • KT-38790 “Convert sealed subclass to object” for data classes doesn't remove ‘data’ keyword
  • KT-38829 ‘Remove redundant backticks’ can be broken with @ in name
  • KT-38831 ‘Replace with assignment’ can be broken with fast code change
  • KT-38832 “Remove curly braces” intention may produce CCE
  • KT-38948 False positive quickfix “Make containing function suspend” for anonymous function
  • KT-38961 “Useless call on collection type” for filterNotNull on non-null array where list return type is expected
  • KT-39069 Improve TrailingCommaInspection
  • KT-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 methods
  • KT-33510 There is no gutter icon to navigate from actual to expect if expect and the corresponding actual declarations are in the same file
  • KT-38260 Navigation bar doesn't show directories of files with a single top level Kotlin class
  • KT-38466 Top level functions/properties aren't shown in navigation panel

IDE. Project View

  • KT-36444 Structure view: add ability to sort by visibility
  • KT-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 declaration
  • KT-30128 Change Signature should move lambda outside of parentheses if the arguments are reordered so that the lambda goes last
  • KT-35338 Move/rename refactorings mess up code formatting by wrapping lines
  • KT-38449 Extract variable refactoring is broken by NPE
  • KT-38543 Copy can't work to package with escaped package
  • KT-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 projects
  • KT-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 index
  • KT-39733 Augmented assignment matching
  • KT-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 wrapper
  • KT-38810 Incorrect order of build phases in Xcode project from new wizard
  • KT-38952 Remove old new_project_wizards
  • KT-39503 New Project wizard 1.4+: release kotlinx.html version is added to dependencies with milestone IDE plugin
  • KT-39700 Wizard: group project templates on the first step by the project type
  • KT-39770 CSS Support in Kotlin wizards
  • KT-39826 Fix Android app in New Template Wizard
  • KT-39843 Change imports in JS/browser wizard

JS. Tools

  • KT-32273 Kotlin/JS console error on hot reload
  • KT-39498 Update dukat version in toolchain near to release of 1.4-M3

JavaScript

  • KT-29916 Implement typeOf on JS
  • KT-35857 Kotlin/JS CLI bundled to IDEA plugin can't compile using IR back-end out of the box
  • KT-36798 KJS: prohibit using @JsExport on a non-top-level declaration
  • KT-37771 KJS: Generated TypeScript does not recursively export base classes (can fail with generics)
  • KT-38113 Review public API of JS stdlib for IR BE
  • KT-38765 [JS / IR] AssertionError: class EventEmitter: Super class should be any: with nested class extending parent class
  • KT-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 collection
  • KT-28933 capitalize() with Locale argument in the JDK stdlib
  • KT-34142 Create SortedMap with Comparator and items
  • KT-34506 Add Sequence.flatMap overload that works on Iterable
  • KT-36894 Support flatMapIndexed in the Collections API
  • KT-38480 Introduce experimental annotation for enabling overload resolution by lambda result
  • KT-38708 minOf/maxOf functions to return min/max value provided by selector
  • KT-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 artifacts
  • KT-23322 Document ‘reduce’ operation behavior on empty collections
  • KT-28753 Comparing floating point values in array/list operations ‘contains’, ‘indexOf’, ‘lastIndexOf’: IEEE 754 or total order
  • KT-30083 Annotate KTypeProjection.STAR with JvmField in a compatible way
  • KT-30084 Annotate functions in KTypeProjection.Companion with JvmStatic
  • KT-31343 Deprecate old String <-> CharArray, ByteArray conversion api
  • KT-34596 Add some validation to KTypeProjection constructor
  • KT-35978 Review and remove experimental stdlib API status for 1.4
  • KT-38388 Document fromIndex and toIndex parameters
  • KT-38854 Gradually change the return type of collection min/max functions to non-nullable
  • KT-39023 Document split(Pattern) extension differences from Pattern.split
  • KT-39064 Introduce minOrNull and maxOrNull extension functions on collections
  • KT-39235 Lift experimental annotation from bit operations
  • KT-39237 Lift experimental annotation from common StringBuilder
  • KT-39238 Appendable.appendRange - remove nullability
  • KT-39239 Lift experimental annotation from String <-> utf8 conversion api
  • KT-39244 KJS: update polyfills, all or most of them must not be enumerable
  • KT-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 IR
  • KT-33207 Kotlin/Native: KNPE during deserialization of an inner class
  • KT-33267 Kotlin/Native: Deserialization error for an “inner” extension property imported from a class
  • KT-37255 Make psi2ir aware of declarations provided by compiler plugins

Reflection

  • KT-22936 Not all things can be changed to createType yet, and now defaultType methods are starting to fail
  • KT-32241 Move KType.javaType into stdlib from reflect
  • KT-34344 KType.javaType implementation throws when invoked with a typeOf()
  • KT-38491 IllegalArgumentException when using callBy on function with inline class parameters and default arguments
  • KT-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 Windows
  • KT-30778 kotlin-compiler.jar contains shaded but not relocated kotlinx.coroutines
  • KT-38070 Compiler option to bypass prerelease metadata incompatibility error
  • KT-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 tasks
  • KT-34487 Gradle build fails with "Cannot run program “java”: error=7, Argument list too long
  • KT-35957 MPP IC fails with “X has several compatible actual declarations” error
  • KT-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 target
  • KT-38286 [Gradle, JS] Error handling on Webpack problems

Fixes

  • KT-31669 Gradle/JS: rise error when plugin loaded more than once
  • KT-32531 [Gradle/JS] Add scoped NPM dependencies
  • KT-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 server
  • KT-35611 Kotlin Gradle plugin should report kotlin2js plugin ID as deprecated
  • KT-35641 Kotlin Gradle plugin should report kotlin-dce-js plugin ID as deprecated
  • KT-36410 JS: Collect stats about IR backend usage
  • KT-36451 KJS Adding npm dependency breaks Webpack devserver reloading
  • KT-37258 Kotlin/JS + Gradle: in continuous mode kotlinNpmInstall time to time outputs “ENOENT: no such file or directory” error
  • KT-38109 [Gradle, JS] Error handling on Karma launcher problems
  • KT-38331 Add an ability to control generating externals for npm deps individually
  • KT-38485 [Gradle, JS] Unable to configure JS compiler with string
  • KT-38683 Remove possibility to set NPM dependency without version
  • KT-38990 Support multiple range versions for NPM dependencies
  • KT-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 Windows
  • KT-39210 Kotlin/JS: with both JS and MPP modules in the same project Gradle configuration fails on nodejs {} and browser {}
  • KT-39377 Use standard source-map-loader instead of custom one

Tools. Gradle. Multiplatform

  • KT-39184 Support publication of Kotlin-distributed libraries with Gradle Metadata
  • KT-39304 Gradle import error java.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 platforms
  • KT-38440 Make error message about missing Podfile path for cocoapods integration actionable for a user
  • KT-38991 Gradle MPP plugin: Enable parallel in-process execution for K/N compiler
  • KT-39935 Support overriding the KotlinNativeCompile task sources
  • KT-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 J2K
  • KT-38004 J2K breaks java getter call in java code
  • KT-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 methods
  • KT-35626 NI: Performance problem with many type parameters
  • KT-36047 Compiler produces if-chain instead of switch when when subject captured as variable
  • KT-36638 Use ‘java/lang/StringBuilder.append (C)Ljava/lang/StringBuilder;’ when appending single character in JVM_IR
  • KT-37389 Avoid type approximation during generation constraints with EQUALITY kind
  • KT-37392 Avoid substitution and type approximation for simple calls
  • KT-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 ambiguity
  • KT-27524 Inline class is boxed when used with suspend modifier
  • KT-27586 ClassCastException occurs if the Result (or any other inline class) is returned from a lambda
  • KT-30419 Use boxed version of an inline class in return type position for covariant and generic-specialized overrides
  • KT-31163 FIR: consider replacing comparisons with compareTo calls and some additional intrinsics
  • KT-31585 ClassCastException with derived class delegated to generic class with inline class type argument
  • KT-31823 NI: Type mismatch with a star projection and UnsafeVariance
  • KT-33119 Pre-increment for inline class wrapping Int compiles to direct increment instead of inc-impl
  • KT-33715 Kotlin/Native: metadata compiler
  • KT-34048 IllegalAccessError when initializing val property in EXACTLY_ONCE lambda
  • KT-34433 NI: Type mismatch with a star projection and UnsafeVariance
  • KT-35133 FIR Java: don't set ‘isOperator’ for methods with non-operator names
  • KT-35234 ClassCastException with creating an inline class from a function reference of covariant or generic-specialized override
  • KT-35406 Generic type implicitly inferred as Nothing with no warning
  • KT-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 smartcast
  • KT-36069 NI: TYPE_MISMATCH caused by incorrect inference to Nothing
  • KT-36125 Callable reference resolution ambiguity error is not displayed properly in the IDE
  • KT-36191 IDE locks loading packages and editing file containing try keyword inside string template
  • KT-36222 NI: Improve error message about nullability mismatch for a generic call
  • KT-36249 NI doesn't use upper bound for T of called function during infer return type and as a result infer it to Any? if the resulting type was intersection type
  • KT-36345 FIR: record argument mapping for use in back-end
  • KT-36446 NI: “UnsupportedOperationException no descriptor for type constructor of IntegerLiteralType[Int,Long,Byte,Short]” with BuilderInference and delegate
  • KT-36758 [FIR] Unresolved callable reference to member of local class
  • KT-36759 [FIR] Unsupported callable reference resolution for methods with default parameters
  • KT-36762 [FIR] Unresolved array.clone()
  • KT-36764 [FIR] Bug in inference with DefinitelyNotNull types
  • KT-36816 NI: definitely not-null (T!!) types in invariant positions don't approximate to T inside inference process
  • KT-36819 NI: premature completion of lambdas, which are passed somewhere
  • KT-36850 Incorrect private visibility of sealed class constructors
  • KT-36856 Throwing exception when there is inheritance in Kotlin from Java class, which contains methods with the same JVM descriptors
  • KT-36879 Introduce FIR_IDENTICAL in diagnostic tests
  • KT-36881 FIR: completion don't runs for return expressions
  • KT-36887 [FIR] Unresolved member in nested lambda in initializer
  • KT-36905 [FIR] Unresolved in lambda in default argument position
  • KT-36953 AssertionError: “Unsigned type expected: null” when there is a range with an unsigned type
  • KT-37009 FIR: Bound smart-cast lost
  • KT-37027 FIR: Wrong projection on spread + varargs on non-final types
  • KT-37038 NI: redundant lambda's arrow breaks CST calculation for extension lambdas
  • KT-37043 NI: inference T to Any? if there was elvis between Java out-type and reified materialize for this type without out projection
  • KT-37066 [FIR] Wrong type inference for lambdas
  • KT-37070 [FIR] Unresolved parameters of outer lambda in scope of inner lambda
  • KT-37087 “IllegalStateException: Can't find method ‘invoke()’” for mutable property reference in default value of an inline function parameter
  • KT-37091 [FIR] Wrong inferred type of when-expression if when-argument is not-null-asserted and type is not specifies explicitly
  • KT-37176 [FIR] Incorrect resolution mode for statements of block
  • KT-37302 Unexpected conversion:Int constant inferred to Long in when expression
  • KT-37327 FIR: Smartcast problem
  • KT-37343 NI: definitely not null types pre-approximation is inconsistent with OI
  • KT-37380 NI: broken some code with def not null types due to skip needed constraints
  • KT-37419 NI: UNRESOLVED_REFERENCE_WRONG_RECEIVER is reported in case lambda with receiver is returned from when expression
  • KT-37434 Kotlin/JS, Kotlin/Native: fun interfaces: SAM conversion to Kotlin interface is not compiled with RESOLUTION_TO_CLASSIFIER
  • KT-37447 Expression from annotation entry in value parameter inside value parameter should be marked as USED_AS_EXPRESSION
  • KT-37453 Type arguments not checked to be empty for candidates with no declared parameters
  • KT-37488 [FIR] Incorrect exhaustiveness checking for branches with equals to object that implements sealed class
  • KT-37497 NI: ‘super’ is not an expression, it can not be used as a receiver for extension functions
  • KT-37530 NI: instantiation of abstract class via callable reference argument causes run time InstantiationError
  • KT-37531 NI: callable reference argument with left hand side type parameter causes frontend exception
  • KT-37554 NI: Nothing is inferred incorrectly with elvis return
  • KT-37579 NI: inconsistent behaviour with OI around implicit invoke convention after safe call with additional implicit receiver
  • KT-37604 “VerifyError: Call to wrong method” in ‘invoke’ for adapted callable reference to constructor with coercion to Unit
  • KT-37621 NI: type variable is inferred to Nothing if the second branch was Nothing and there was upper bound for a type parameter
  • KT-37626 NI: builder inference with expected type breaks class references resolution for a class with parameters
  • KT-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 calculation
  • KT-37644 NI: appeared exception during incorporation of a captured type into a type variable for elvis resolve
  • KT-37650 NI: it's impossible to infer a type variable with the participation of a wrapped covariant type
  • KT-37718 False positive unused parameter for @JvmStatic main function in object
  • KT-37779 ClassCastException: Named argument without spread operator for vararg parameter causes code to crash on runtime
  • KT-37832 In MPP, subtypes of types defined in legacy libraries, like stdlib, cannot properly resolve on the consumer side receviing both
  • KT-37861 Capturing an outer class instance in a default parameter of inner class constructor causes VerifyError
  • KT-37986 Return value of function reference returning inline class mapped to ‘java.lang.Object’ is not boxed properly
  • KT-37998 ‘!!’ operator on safe call of function returning inline class value causes CCE at runtime
  • KT-38042 Allow kotlin.Result as a return type only if one enabled inline classes explicitly
  • KT-38134 NI: Type mismatch with a star projection and UnsafeVariance
  • KT-38298 Inconsistent choice of candidate when both expect/actual are available (affects only enableGranularSourceSetMetadata)
  • KT-38661 NI: “Cannot infer type variable TypeVariable” with lambda with receiver
  • KT-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 creation
  • KT-35050 Significant freezes due to findSdkAcrossDependencies()
  • KT-37301 Freeze when “Optimize Imports” in KotlinImportOptimizer
  • KT-37466 Invalidate partialBodyResolveCache on OCB
  • KT-37467 PerFileAnalysisCache.fetchAnalysisResults
  • KT-37993 Do not resolve references if paste code is located in the same origin
  • KT-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 supertype
  • KT-33473 UAST: References to local variable are resolved to UastKotlinPsiVariable
  • KT-34564 Kotlin USimpleNameReferenceExpression for annotation parameter resolves to null for compiled Kotlin classes
  • KT-34973 Light class incorrectly claiming ambiguous method call from Java when one overload is synthetic
  • KT-35801 UAST: UnknownKotlinExpression for valid Kotlin annotated expression
  • KT-35804 UAST: Annotations missing from catch clause parameters
  • KT-35848 UAST: ClassCastException when trying to invoke UElement for some wrapped PsiElements
  • KT-36156 Kotlin annotation attributes have blue color whereas white in Java
  • KT-36275 UAST: UCallExpression::resolve returns null for local function calls
  • KT-36717 Fix failing light class tests after switching plugin to language version 1.4
  • KT-36877 Message bundles for copy paste are missed in 201
  • KT-36907 IDE: -Xuse-ir setting on facet level does not affect highlighting
  • KT-37133 UAST: Annotating assignment expression sometimes leads to UnknownKotlinExpression
  • KT-37312 “Implement members” intention put function in the primary constructor if there are unused brackets in class
  • KT-37613 Uast: no parameters in reified method
  • KT-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 module
  • KT-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 prioritized
  • KT-36860 Provide convenient completion of extension functions from objects
  • KT-37395 Invalid callable reference completion of member extension

IDE. Debugger

  • KT-34906 Implement Coroutine Debugger
  • KT-35392 Debugger omits meaningful part of the stacktrace even with disabled filter
  • KT-36215 Coroutines debugger tab is empty in Android Studio
  • KT-37238 Coroutines Debugger: dump creation fails every time
  • KT-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 classpath
  • KT-38049 Coroutines Debugger: NPE “null cannot be cast to non-null type com.sun.jdi.ObjectReference” is thrown by calling dumpCoroutines
  • KT-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 With kotlin.mpp.enableGranularSourceSetsMetadata=true, IDE misses dependsOn-relation between kotlin and android sourceSets, leading to issues with expect/actual matching
  • KT-36354 IDE: Gradle import from non-JVM projects: dependency to output artifact is created instead of module dependency
  • KT-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 import
  • KT-37237 Script configurations should be loaded during project import in case of errors
  • KT-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 getter
  • KT-34026 Add “Remove argument” quick fix for redundant argument in constructor call
  • KT-34332 Add “Remove argument” quick fix for redundant argument in function call
  • KT-34450 Convert function to property intention should be also displayed on fun keyword
  • KT-34593 Invert ‘if’ condition: Invert String.isNotEmpty should be String.isEmpty
  • KT-34819 Inspection: report useless elvis “?: return null”
  • KT-37849 Support ReplaceWith for supertypes call

Performance Improvements

Fixes

  • KT-12329 “invert if” inserts unnecessary ‘continue’ for statement inside a loop with ‘continue’
  • KT-17615 “Convert parameter to receiver” changes this to this@ < no name provided >
  • KT-20868 IntelliJ says method from anonymous inner class with inferred interface type is not used even though it is
  • KT-20907 Secondary constructor is marked as unused by IDE when called by typealias
  • KT-22368 “Convert to block body” intention incorrectly formats closing brace
  • KT-23510 “Remove parameter” quick fix keeps lambda argument when it's out of parentheses
  • KT-27601 False positive “Unused import directive” for extension function used in KDoc
  • KT-28085 “Convert receiver to parameter” introduces incorrect this@class in lambda
  • KT-30028 “Convert parameter to receiver” introduces wrong ‘this’ qualifier for extension lambda receiver
  • KT-31601 “Remove redundant let call” changes semantics by introducing multiple safe calls
  • KT-31800 False positive “never used” with function in private val object expression
  • KT-31912 QF “Convert to anonymous object” do nothing on SAM-interfaces
  • KT-32561 “Property can be declared in constructor” causes another warning
  • KT-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 if
  • KT-36225 KNPE: CodeInliner.processTypeParameterUsages with ReplaceWith for inline reified generic function
  • KT-36266 NPE when invoking Lift return out of if/when after intention becomes inapplicable but still beeing shown
  • KT-36296 False negative “Redundant SAM-constructor” with multiple SAM arguments
  • KT-36367 False negative “Redundant SAM-constructor” for kotlin functions
  • KT-36368 False negative “Redundant SAM-constructor” for fun interfaces in kotlin
  • KT-36395 False positive “Redundant SAM-constructor” with two java interfaces extending one another
  • KT-36411 “Put parameters on separate lines” and “Put parameters on one line” actions do not respect trailing comma
  • KT-36482 “Add JvmOverloads annotation” intention is still suggested for annotation's parameters
  • KT-36686 Implement members quickfix puts the implementation before the data class if it already has a body
  • KT-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 members
  • KT-36735 Inspection ‘Replace ‘toString’ with string template’ miss curly braces and generates wrong code for constructor calls
  • KT-36834 Convert use-site targets and usages with convert property to fun intention
  • KT-37213 “Move to top level” intention does not update imports for extension functions
  • KT-37496 False positive “Remove redundant backticks” for multiple underscores variable name
  • KT-37502 False positive “redundant lambda arrow” with inline generic function with reified type in object and anonymous parameter name
  • KT-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 inspections
  • KT-37749 “Convert to anonymous object” intention is suggested for Java SAM conversion, but not for Kotlin
  • KT-37781 “Add modifier” intention/quickfix works incorrectly with functional interfaces
  • KT-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 unresolved
  • KT-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 usages
  • KT-18619 Find Usages of element used via import alias does not show actual usage location
  • KT-34088 Navigate | Implementations action doesn't show implementations of Java methods in Kotlin files if method has parameters referring to generic type
  • KT-35006 IDE: “Navigate to inline function call site” from stack trace for nested inline call navigates to outer inline call
  • KT-36138 628 second freeze when doing Find Usages on data class property
  • KT-36218 Show Kotlin file members in navigation bar
  • KT-37494 AnnotatedElementsSearch unable to find annotated property accessor

IDE. Project View

  • KT-32886 Project tool window: Show Visibility Icons does nothing for Kotlin classes
  • KT-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 declaration
  • KT-29870 Inline variable doesn't handle ‘when’ subject val correctly
  • KT-33045 Cover Move Refactoring by statistics (FUS)
  • KT-36071 Refactoring: Move top declaration implementation refactoring
  • KT-36072 Empty files are removed on Refactor/Move action with turned off “Delete empty source files” option
  • KT-36114 java.lang.NoClassDefFoundError exception on Refactor/Move of kotlin function if it is referenced in java
  • KT-36129 java.lang.Throwable: Invalid file exception occurs on Refactor/Move of class from kotlin script
  • KT-36382 Move file refactoring breaks ktor application config
  • KT-36504 “Extract property” suggests potentially invalid name for new property
  • KT-37637 KotlinChangeSignatureUsageProcessor broke Change Signature in Python plugin
  • KT-37797 Useless “Value for new paramater” step in ‘Update usages to reflect signature changes’ for method with default parameter value
  • KT-37822 Improve message “Inline all references and remove the kind”
  • KT-38348 UL methods return signature without generic type parameters
  • KT-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 With kotlin.gradle.testing.enabled=true, gradle console output gets extra ijLog messages
  • KT-36910 There are no Run/Debug actions in context menu for non-JVM platform-specific test results
  • KT-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 modules
  • KT-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 used
  • KT-35585 New Project wizard: remember choices which have sense for many projects
  • KT-35691 New Project wizard: artifact and group values are effectively ignored
  • KT-35693 New Project wizard creates pom.xml / build.gradle referring to release Kotlin version only
  • KT-36136 New Project Wizard: generated projects are missing m2 Gradle repository
  • KT-36137 New Project Wizard: “multiplatform” shall be written as a single word, without the capital P in the middle
  • KT-36155 New Project Wizard: show warning “Multiplatform project cannot be generated” only for MPP projects
  • KT-36162 New Project Wizard: make the error messages in modules editor actionable
  • KT-36163 New Project Wizard: remove trailing spaces in Android SDK Path automatically
  • KT-36166 New Project Wizard: addition of Android target into a multiplatform project doesn't add a necessary minimal Android configuration
  • KT-36169 New Project Wizard: Android-related projects failed to build
  • KT-36176 New Project Wizard: module templates doesn't work for multiplatform projects
  • KT-36177 New Project Wizard: it's impossible to add more than one target of JVM kind to a multiplatform project
  • KT-36180 New Project Wizard: it's impossible to set target JVM version for a JVM module
  • KT-36226 New Project Wizard: add Mobile Android/iOS project template
  • KT-36267 New Project Wizard: flatten JVM targets list for multiplatform projects
  • KT-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 hyperlink
  • KT-37667 New project wizard: implement new UI design
  • KT-37674 Kotlin version in build files includes the IDEA version
  • KT-38061 New Project wizard 1.4: do not allow choosing build system if corresponding IJ plugin is disabled
  • KT-38567 New Project wizard 1.4+: Improve processing case when project with required path already exists
  • KT-38579 New Project wizard 1.4+: multiplatform mobile application: build fails on lint task: Configuration with name ‘compileClasspath’ not found
  • KT-38929 New project wizard: update libraries in project template according to kotlin IDE plugin version
  • KT-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 code
  • KT-37128 KJS: StackOverflowException when using reified recursive bound for type parameter
  • KT-37163 KJS: NullPointerException on using intersection type as a reified one
  • KT-37418 Support AssociatedObjectKey and findAssociatedObject 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 reference
  • KT-12448 Make @Suppress applicable for type parameters
  • KT-22932 String.format should support null locale
  • KT-23514 assertFailsWith should link unexpected exception as cause
  • KT-23737 JS & MPP: Support exception cause and addSuppressed
  • KT-25651 Add shuffle() to Array, ByteArray, IntArray, etc to match MutableList
  • KT-26494 Create an interface with provideDelegate()
  • KT-27729 Inherit ReadWriteProperty from ReadOnlyProperty
  • KT-28290 Add the onEach extension function to the Array
  • KT-29182 SIZE_BYTES/BITS for Float and Double
  • KT-30372 Add associateWith to Array
  • KT-33906 Add vararg overloads for maxOf/minOf functions
  • KT-34161 Array.contentEquals/contentHashCode/contentToString should allow null array receiver and argument
  • KT-35851 Add setOfNotNull function
  • KT-36866 reduceIndexedOrNull
  • KT-36955 stdlib: Reverse range and sortDescending range
  • KT-37161 Add #onEachIndexed similar to #forEachIndexed
  • KT-37603 Throwable.stackTraceToString: string with detailed information about exception
  • KT-37751 Implement shuffled() method Sequences
  • KT-37804 Add ‘fail’ in kotlin-test that allows to specify cause
  • KT-37839 StringBuilder.appendLine in stdlib-common
  • KT-37910 Support Media Source Extension (MSE) and Encrypted Media Extensions (EME) in Kotlin/Js
  • KT-38044 Common Throwable.printStackTrace

Performance Improvements

Fixes

  • KT-13887 Double/Float companion values such as NaN should be constants
  • KT-14119 String.toBoolean() should be String?.toBoolean()
  • KT-16529 Names of KProperty's type parameters are inconsistent with ReadOnlyProperty/ReadWriteProperty
  • KT-36356 Specify which element Iterable.distinctBy(selector) retains
  • KT-38060 runningFold and runningReduce instead of scanReduce

Reflection

  • KT-29969 Support optional vararg parameter in KCallable.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 = true
  • KT-35942 User test Gradle source set code cannot reach out internal members from the production code
  • KT-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 DSL
  • KT-32721 [Gradle, JS] CSS Support for browser
  • KT-36843 [Gradle, JS, IR] Configure JS Compiler Type through DSL
  • KT-37207 Allow to use npm dependency from a local directory
  • KT-38056 [Gradle, JS] Group tasks by browser and node

Fixes

  • KT-32466 kotlinNpmResolve fails in the case of composite build
  • KT-34468 Consider custom versions while parsing yarn.lock
  • KT-36489 [Gradle, JS, IR]: Correct naming for both compilers
  • KT-36784 Kotlin. JS. MPP – Cannot find project :js when using Gradle composite builds
  • KT-36864 KJS. Composite build require JS plugin in root project
  • KT-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 configuration
  • KT-37587 KJS. Karma ignore dynamically created webpack patches
  • KT-37635 [Gradle, JS] Webpack devtool provide enum for only 2 variants
  • KT-37636 [Gradle, JS] Extract package.json from klib
  • KT-37762 [Gradle, JS] Actualize Node and Yarn versions in 1.4
  • KT-37988 [Gradle, JS] Bump NPM versions on 1.4-M2
  • KT-38051 [Gradle, JS] browserDistribution doesn't provide outputs
  • KT-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 targets
  • KT-38746 In HMPP, compilation of a shared-native source set could be mistakenly disabled
  • KT-39094 Provide a way to pass custom JVM args to commonizer from Gradle

Tools. Gradle. Native

  • KT-25887 Kotlin Native gradle build fail with endorsed is not supported. Endorsed standards and standalone APIs on jdk > 8 & CLion
  • KT-36721 Deduce a fully qualified unique_name in klib manifest from something like group name
  • KT-37730 Native part of multiplatform build fails with “unresolved reference” errors if there is a local and external module with the same name
  • KT-38174 Kotlin/Native: Disable platform libraries generation at the user side by default

Tools. J2K

Fixes

  • KT-34965 Convert function reference copied from function call
  • KT-35593 New J2K: method‘s names don’t change between functions declared in Number.java and Number.kt
  • KT-35897 J2K converts private enum constructors to internal constructors and produces NON_PRIVATE_CONSTRUCTOR_IN_ENUM error
  • KT-36088 J2K: StackOverflowError when trying to convert Java class with recursive type bound
  • KT-36149 J2K: PsiInvalidElementAccessException: Element class com.intellij.psi.impl.source.tree.CompositeElement of type DOT_QUALIFIED_EXPRESSION
  • KT-36152 J2K: RuntimeException: Couldn't get containingKtFile for ktElement
  • KT-36159 J2K: ClassCastException if constructor contains a super() call and class extends from Kotlin class
  • KT-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 array
  • KT-37052 new J2K: Java private function is converted to private open top-level function
  • KT-37620 new J2K: IndexOutOfBoundsException (DefaultArgumentsConversion.applyToElement) with overloaded function with vararg parameter
  • KT-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 jsr223
  • KT-37558 Scripts: implicit receivers don't work correctly when using CompiledScriptJarsCache
  • KT-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 call
  • KT-7304 Smart-casts and generic calls with multiple bounds on type parameters
  • KT-7745 Support named arguments in their own position even if the result appears as mixed
  • KT-7770 SAM for Kotlin classes
  • KT-8834 Support function references with default values as other function types
  • KT-10930 Expected type isn't taken into account for delegated properties
  • KT-11723 Support coercion to Unit in callable reference resolution
  • KT-14416 Support of @PolymorphicSignature in Kotlin compiler
  • KT-16873 Support COERSION_TO_UNIT for suspend lambdas
  • KT-17643 Inferring type of Pair based on known Map type
  • KT-19869 Support function references to functions with vararg if expected type ends with repeated vararg element type
  • KT-21178 Prohibit access of protected members inside public inline members
  • KT-21368 Improve type inference
  • KT-25866 Iterable.forEach does not accept functions that return non-Unit values
  • KT-26165 Support VarHandle in JVM codegen
  • KT-27582 Allow contracts on final non-override members
  • KT-28298 Allow references to generic (reified) type parameters in contracts
  • KT-31230 Refine rules for allowed Array-based class literals on different platforms: allow Array::class everywhere, disallow Array<...>::class on non-JVM
  • KT-31244 Choose Java field during overload resolution with a pure Kotlin property
  • KT-31734 Empty parameter list required on Annotations of function types
  • KT-33990 Type argument isn't checked during resolution part
  • KT-33413 Allow ‘break’ and ‘continue’ in ‘when’ statement to point to innermost surrounding loop
  • KT-34743 Support trailing comma in the compiler
  • KT-34847 Lift restrictions from kotlin.Result

Fixes

  • KT-2869 Incorrect resolve with ‘unsafe call error’ and generics
  • KT-3630 Extension property (generic function type) does not work
  • KT-3668 Infer type parameters for extension ‘get’ in delegated property
  • KT-3850 Receiver check fails when type parameter has another parameter as a bound
  • KT-3884 Generic candidate with contradiction is preferred over matching global function
  • KT-4625 Poor error highlighting when assigning not matched type to index operator
  • KT-5449 Wrong resolve when functions differ only in the nullability of generic type
  • KT-5606 “Type mismatch” in Java constructor call with SAM lambda and vararg parameter
  • KT-6005 Type inference problem in sam constructors
  • KT-6591 Overloaded generic extension function call with null argument resolved incorrectly
  • KT-6812 Type inference fails when passing a null instead of a generic type
  • KT-7298 Bogus type inference error in generic method call translated from Java
  • KT-7301 Type inference error in Kotlin code translated from Java
  • KT-7333 Type inference fails with star-projections in code translated from Java
  • KT-7363 Kotlin code with star-projections translated from Java does not typecheck
  • KT-7378 3-dimension array type inference fail
  • KT-7410 Call resolution error appears only after adding non-applicable overload
  • KT-7420 Type inference sometimes infers less specific type than in Java
  • KT-7758 Type of lambda can't be infered
  • KT-8218 Wrong ‘equals’ for generic types with platform type and error type
  • KT-8265 Non-typesafe program is compiled without errors
  • KT-8637 Useless diagnostics for type parameters with unsafe nullability
  • KT-8966 Smart casts don't work with implicit receiver and extension on type parameter with bounds
  • KT-10265 Type inference problem when using sealed class and interfaces
  • KT-10364 Call completeCall on variable before invoke resolution
  • KT-10612 java.util.Comparator.comparing type inference
  • KT-10628 Wrong type mismatch with star projection of inner class inside use-site projected type
  • KT-10662 Smartcast with not-null assertion
  • KT-10681 Explicit type arguments not taken into account when determining applicable overloads of a generic function
  • KT-10755 Not “least” common super-type is selected for nested ‘if’ result in presence of multiple inheritance
  • KT-10929 Type inference based on receiver type doesn't work for delegated properties in some cases
  • KT-10962 Wrong resolution when argument has unstable DataFlowValue
  • KT-11108 RxJava failed platform type inference
  • KT-11137 Java synthetic property does not function for a type with projection
  • KT-11144 UninferredParameterTypeConstructor exception during build
  • KT-11184 Type inference failed for combination of safe-call, elvis, HashSet and emptySet
  • KT-11218 Type inference incorrectly infers nullable type for type parameter
  • KT-11323 Type inference failed in call with lambda returning emptyList
  • KT-11331 Unexpected “Type inference failed” in SAM-conversion to projected type
  • KT-11444 Type inference fails
  • KT-11664 Disfunctional inference with nullable type parameters
  • KT-11894 Type substitution bug related platform types
  • KT-11897 No error REIFIED_TYPE_FORBIDDEN_SUBSTITUTION on captured type
  • KT-11898 Type inference error related to captured types
  • KT-12036 Type inference failed
  • KT-12038 non-null checks and inference
  • KT-12190 Type inference for TreeMap type parameters from expected type doesn't work when passing comparator.
  • KT-12684 A problem with reified type-parameters and smart-casts
  • KT-12833 ‘it’ does not work in typed containers of lambdas
  • KT-13002 “Error type encountered: UninferredParameterTypeConstructor” with elvis and when
  • KT-13028 cast with star on on type with contravariant generic parameter makes the compiler crash
  • KT-13339 Type inference failed for synthetic Java property call on implicit smart cast receiver
  • KT-13398 “Type T is not a subtype of Any”
  • KT-13683 Type inference incorporation error when passed null into not-null parameter
  • KT-13721 Type inference fails when function arguments are involved
  • KT-13725 Type inference fails to infer type with array as a generic argument
  • KT-13800 Type inference fails when null passed as argument (related to common system)
  • KT-13934 Callable reference to companion object member via class name is not resolved
  • KT-13964 Unknown descriptor on compiling invoke operator call with generic parameter
  • KT-13965 Invoke operator called on extension property of generic type has incorrect parameter type
  • KT-13992 Incorrect TYPE_INFERENCE_UPPER_BOUND_VIOLATED
  • KT-14101 Type inference failed on null
  • KT-14174 Compiler can't infer type when it should be able to
  • KT-14351 Internal error with uninferred types for compiling complicated when expression
  • KT-14460 Smartcast isn't considered as necessary in the last expression of lambda
  • KT-14463 Missing MEMBER_PROJECTED_OUT error after smartcast with invoke
  • KT-14499 Type inference fails even if we specify T explicitly
  • KT-14725 kotlin generics makes agera's compiled repositories unusable
  • KT-14803 Weird smart cast absence in lazy delegate
  • KT-14972 Type inference failed: wrong common supertype for types with several subtypes
  • KT-14980 Type inference for nullable type in if statement
  • KT-15155 False “No cast needed” warning for conversion to star-projected type
  • KT-15185 Inference for coroutines not work in case where we have suspend function with new coroutine inside
  • KT-15263 Kotlin can't infer the type of a multiple bounded method
  • KT-15389 Type inference for coroutines in 1.1-M04
  • KT-15394 Support coercion to Unit for last statement for suspend lambda
  • KT-15396 Type inference for last statement in coroutine
  • KT-15488 Type inference not working on generic function returning generic type in lambda result
  • KT-15648 Better use of overladed functions with nullables
  • KT-15922 TYPE_INFERENCE_CONFLICTING_SUBSTITUTION for function reference
  • KT-15923 Internal error: empty intersection for types
  • KT-16247 Overload resolution ambiguity with intersection types and method references
  • KT-16249 Can't call generic method with overloaded method reference when non-generic overload exists
  • KT-16421 Remove @ParameterName annotation from diagnostic messages
  • KT-16480 Wrong “Type mismatch” for variable as function call
  • KT-16591 Type inferencing doesn't consider common base class of T of multiple Foo function parameters
  • KT-16678 Overload resolution ambiguity on println()
  • KT-16844 Recursive dependency] (DeferredType) error on code generation.
  • KT-16869 Cannot infer type parameter S in fun <S, T : S?> f(x: S, g: (S) -> T): T
  • KT-17018 “Rewrite at slice LEXICAL_SCOPE” for ‘when’ with function reference inside lambda
  • KT-17048 Compilation exception: error type encountered in some combination of when/elvis with multiple inheritance
  • KT-17340 Type inference failed on overloaded method reference with expected KFunction
  • KT-17386 Smart cast on LHS of callable reference doesn't work if expected type is nullable
  • KT-17487 ReenteringLazyValueComputationException for interface with a subclass that has a property of interface type
  • KT-17552 Call completed not running for elvis as last expression in lambda
  • KT-17799 Smart cast doesn't work for callable reference (colon-colon operator)
  • KT-17968 More type inference problems with Streams.collect
  • KT-17995 No type mismatch with empty when expression inside lambda
  • KT-18002 Issue with star projection for generic type with recursive upper bound
  • KT-18014 Cannot use Comparator.comparing
  • KT-18080 Type inference failed for generic method reference argument
  • KT-18192 Type inference fails for some nested generic type structures
  • KT-18207 Unexpected attempt to smart cast causes compile error
  • KT-18379 Type inference failed although explicit specified
  • KT-18401 Type mismatch when inferring out type parameter (related to callable reference)
  • KT-18481 ReenteringLazyValueComputationException for recursive const declaration without explicit type
  • KT-18541 Prohibit “tailrec” modifier on open functions
  • KT-18790 function take the parameterized type with multi-bounds can't working
  • KT-19139 Kotlin build error in Android Studio on << intent.putExtra(“string”, it.getString(“string”) >> inside “else if” block
  • KT-19751 Nested conditionals break type inference when multiple types are possible for the expression
  • KT-19880 An overload with nullable parameter is not resolved due to a smart cast attempt after assignment
  • KT-19884 type inference with type parameter
  • KT-20226 Return type ‘Any’ inferred for lambda with early return with integer literal in one of possible return values
  • KT-20656 Callable reference breaks smart cast for next statement
  • KT-20734 Invalid “Smart-cast impossible” when there are applicable extension and semi-applicable member
  • KT-20817 Coroutine builder type inference does not take smart casts into account (confusing)
  • KT-21060 ReenteringLazyValueComputationException during type inference
  • KT-21396 if-else with a branch of type Nothing fails to infer receiver type
  • KT-21463 Compiler doesn't take into accout a type parameter upper bound if a corresponding type argument is in projection
  • KT-21607 Type inference fails with intermediate function
  • KT-21694 Type inference failed for ObservableList
  • KT-22012 Kotlin type deduction does not handle Java's <? super T> constructs
  • KT-22022 ReenteringLazyValueComputationException when having cyclic references to static variables
  • KT-22032 Multiple type parameter bounds & smart casts
  • KT-22043 Report an error when comparing enum (==/!=/when) to any other incompatible type since 1.4
  • KT-22070 Type inference issue with platform types and SAM conversion
  • KT-22474 Type safety problem because of incorrect subtyping for intersection types
  • KT-22636 Anonymous function can be passed as a suspending one, failing at runtime
  • KT-22723 Inconsistent behavior of floating-point number comparisons
  • KT-22775 Type inference failed when yielding smartcasted not null value from sequence
  • KT-22885 Broken type safety with function variables caused by wrong subtyping check that includes intersection types
  • KT-23141 Cannot resolve between two functions when only one of them accepts nullable parameter
  • KT-23156 IDEA asking me to remove uninferable explicit type signature
  • KT-23391 Bogus type inference error with smart cast, synthetic property and star projection
  • KT-23475 Implicit invoke on property with generic functional return type resolves incorrectly
  • KT-23482 Incorrect frontend behaviour for not inferred type for generic property with function type as result
  • KT-23677 Incorrect error diagnostic for return types that coerced to ‘Unit’ inside lambda
  • KT-23748 Erroneous type mismatch when call with @Exact annotation depends on non-fixed type variable
  • KT-23755 Nested lambdas with nested types can cause false USELESS_CAST warning
  • KT-23791 Explicit type argument leads to an error, while candidate is picked correctly without it
  • KT-23992 Target prefixes for annotations on supertype list elements are not checked
  • KT-24143 Type-checking error for generic functions
  • KT-24217 Type inference for generic functions reference problem.
  • KT-24237 Uninferred type parameter on variable with multiple smart casts in elvis
  • KT-24317 Unnecessary non-null assertion inspection shown
  • KT-24341 Compiler exception instead of error about “upper bound violated”
  • KT-24355 Overload resolution ambiguity due to unstable smartcast
  • KT-24458 Cannot solve “Conditional branch result is implicitly cast to Any” with List
  • KT-24493 Incorrect error about Array unsupported
  • KT-24886 Type inference failure in an if-else_if-else
  • KT-24918 type inference not good enough for return type with involved if statement
  • KT-24920 Type inference failure when using RxJava compose
  • KT-24993 Inference for buildSequence/yield doesn't work for labeled lambdas
  • KT-25063 List of Arrays - wrong type inferred if nullable involved
  • KT-25268 Incorrect type inference (least upper bound of the types) in exhaustive when for Number
  • KT-25294 Reactors Mono map function with Kotlin
  • KT-25306 Make f(a = arrayOf(x)) equivalent to f(a = *arrayOf(x))
  • KT-25342 Type inference: lazy with generic fails to infer
  • KT-25434 Too eager smartcast cause type mismatch
  • KT-25585 “Rewrite at slice LEXICAL_SCOPE” for if expression with callable reference inside lambda
  • KT-25656 Short-hand array literal notation type inference fails in nested annotations
  • KT-25675 return when leads to compiler error
  • KT-25721 Type inference does not work in nested try catch
  • KT-25827 NullPointerException in setResultingSubstitutor with a generic base class
  • KT-25841 Collection type is inferred as Collection if the values returned from map function have an intersection common type
  • KT-25942 Pass a parameter to generic function with several upper bounds
  • KT-26157 Failed type inference for Delegates.observable parameter with a nullable property
  • KT-26264 No smart cast on implicit receiver extension function call
  • KT-26638 Check for repeatablilty of annotations doesn't take into account annotations with use-site target
  • KT-26698 OnlyInputTypes doesn't work in presence of upper bound constraint
  • KT-26704 Correct variable-as-function call fails to compile in case of function type dependent on variable type
  • KT-27440 Infer lambda parameter type before lambda analysis in common system
  • KT-27464 False negative type mismatch when a non-null assertion is used on a top-level var mutable variable
  • KT-27606 Incorrect type inference when common supertype of enum classes is involved
  • KT-27722 mapNotNull on List<Result> fails if T is not subtype of Any
  • KT-27781 ReenteringLazyValueComputationException for anonymous object property referring to itself in overridden method
  • KT-27799 Prohibit references to reified type parameters in annotation arguments in local classes / anonymous objects
  • KT-28083 Nothing-call smart cast of a variable that a lambda returns does not affect the lambda's return type
  • KT-28111 Type inference fails for return type of lambda with constrained generic
  • KT-28242 Not-null assertion operator doesn't affect smartcast types
  • KT-28264 Resulting type of a safe call should produce type that is intersected with Any
  • KT-28305 “Error type encountered” with elvis operator, type argument and explicit Any type
  • KT-28319 “resultingDescriptor shouldn't be null” for a star projection base class
  • KT-28334 Smartcast doesn't work if original type is type with star projection and there was already another smartcast
  • KT-28370 Var not-null smartcasts are wrong if reassignments are used inside catch section (in try-catch) or try section (in try-finally)
  • KT-28424 Type annotations are not analyzed properly in several cases
  • KT-28584 Complex condition fails smart cast
  • KT-28614 “Error type encountered: UninferredParameterTypeConstructor”
  • KT-28726 Recursion in type inference causes ReenteringLazyValueComputationException
  • KT-28837 SAM conversion doesn't work for arguments of members imported from object
  • KT-28873 Function reference resolution ambiguity is not reported
  • KT-28999 Prohibit type parameters for anonymous objects
  • KT-28951 “Error type encountered” with elvis operator, type argument and explicit Any type
  • KT-29014 Unclear diagnostic for conditional branches coercion with multiple root interfaces and no common superclass
  • KT-29079 ByteArray.let(::String) can not compile as the callable reference is resolved before the outer call
  • KT-29258 Incorrect return type is used for analysis of an extension lambda (if its type is used as a generic parameter)
  • KT-29330 NI: Multiple duplicate error messages in IDE popup with lambda argument
  • KT-29402 Missed INLINE_FROM_HIGHER_PLATFORM diagnostic if inline function called from Derived class
  • KT-29515 type inference fails to infer T of KFunction0 for most types
  • KT-29712 Incorrect compiler warning, “No cast needed” for recursive type bound
  • KT-29876 ReenteringLazyValueComputationException with usage of property inside lambda during assignment to that property
  • KT-29911 Not-null smart cast fails inside inline lambda after safe call on generic variable with nullable upper bound
  • KT-29943 Callable reference resolution ambiguity between a property and a function is reported incorrectly in function calls expecting KProperty1
  • KT-29949 Cannot chose among overload as soon as nullable type is involved
  • KT-30151 Any instead of Number is inferred as common super type of Int and Double
  • KT-30176 Compiler can't infer correct type argument which blocks overload resolution
  • KT-30240 Can't infer intersection type for a type variable with several bounds
  • KT-30278 Retain star projections in typeOf
  • KT-30394 Different behaviour in type inferences (bug in the old inference) when cast of variable of nullable type parameter to not-null is used
  • KT-30496 Wrong infix generic extension function is chosen for null receiver
  • KT-30550 Suspend modifier on a functional type changes resolution of return type
  • KT-30892 IllegalStateException(UninferredParameterTypeConstructor) with return references to local function from if-else expression
  • KT-30947 No smart cast on accessing generic class member with upper-bounded type argument
  • KT-31102 Type mismatch in mixing lambda and callable reference
  • KT-31151 “IllegalStateException: Error type encountered” with elvis, when and inheritance
  • KT-31219 Type mismatch for delegated property depending on anonymous object
  • KT-31290 overload resolution ambiguity with Iterable.mapTo()
  • KT-31352 JvmName can't eliminate platform declaration clash of annotated properties
  • KT-31532 Type inference for complex last expression in lambda
  • KT-31540 Change initialization order of default values for tail recursive optimized functions
  • KT-31594 No SETTER_PROJECTED_OUT diagnostic on synthetic properties from Java
  • KT-31630 TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR for generic function with callable reference argument
  • KT-31654 False unnecessary non-null assertion (!!) warning inside yield call
  • KT-31679 NI: Unresolved reference with delegated property and anonymous object
  • KT-31739 Overload resolution ambiguity in generic function call with lambda arguments that take different parameter types
  • KT-31923 Outer finally block inserted before return instruction is not excluded from catch interval of inner try (without finally) block
  • KT-31968 New inference is using a more common system to infer types from nested elvis call than OI
  • KT-31978 NI: changed precedence of elvis operator relative to equality operator
  • KT-32026 Infer return type of @PolymorphicSignature method to void if no expected type is given
  • KT-32087 “Remove explicit type arguments” inspection when function creates a lambda that calls a function with type argument
  • KT-32097 NI: NON_APPLICABLE_CALL_FOR_BUILDER_INFERENCE when using awaitClose in channelFlow builder
  • KT-32098 Kotlin 1.3.40 type inference mismatch between the IDE and the compiler
  • KT-32151 Return arguments of lambda are resolved in common system while in OI aren't
  • KT-32165 Cannot use ‘Nothing’ as reified type parameter,
  • KT-32196 Inconsistency between compiler and inspection with mapNotNull
  • KT-32203 NON_APPLICABLE_CALL_FOR_BUILDER_INFERENCE warning false-positive
  • KT-32249 New inference breaks generic property delegate resolution
  • KT-32250 New Type Inference fails for nullable field
  • KT-32262 Type inference failed in presence of @JvmSuppressWildcards
  • KT-32267 NI: “Overload resolution ambiguity. All these functions match.” with KFunction
  • KT-32284 False positive “Redundant lambda arrow” with extension function returning generic with lambda type argument
  • KT-32290 New Inference: old inference fails on nullable lambda from if-expression
  • KT-32306 False positive Remove explicit type arguments when using generic return argument from lambda for delegated property
  • KT-32358 NI: Smart cast doesn't work with inline function after elvis operator
  • KT-32383 NI: listOf(…) infers to invalid type if different enums implementing the same interface are involved
  • KT-32397 OI can't infer types when there are different lower and upper bounds in common system
  • KT-32399 OI can't choose candidate with different lower and upper bounds
  • KT-32425 No coercion to Unit by a return type of callable expression argument
  • KT-32431 Nothing inferred for upper bound in parametric class
  • KT-32449 IDE fails to report error: Expected type mismatch
  • KT-32462 NI: “AssertionError: No resolved call” with callable reference
  • KT-32497 Compiler Type inference fails when inferring type parameters (“Generics”) - IDE inference works
  • KT-32507 IntelliJ Kotlin plugin not recognizing smart cast to non-nullable type
  • KT-32501 type inference should infer nullable type if non-nullable doesn't work
  • KT-32527 Cast required for Sequence.map when mapping between disjoint types
  • KT-32548 OVERLOAD_RESOLUTION_AMBIGUITY with platform generic types
  • KT-32595 NI: Overload resolution ambiguity for member function with type parameter with upper bounds and lambda parameter
  • KT-32598 Kotlin 1.3.41 type inference problem
  • KT-32654 Non-applicable call for builder inference with coroutines
  • KT-32655 Kotlin compiler and IDEA plugin disagree on type
  • KT-32686 New type inference algorithm infers wrong type when return type of when expression has a type parameter, and it's not specified in all cases
  • KT-32788 No smartcast for an implicit “this” in old inference
  • KT-32792 Bug in new type inference algorithm for Android Studio
  • KT-32800 Problem with inlined getValue in Delegates, IDEA does not detect problem, but code doesn't compile
  • KT-32802 Odd behaviour with smart-casting in exception block
  • KT-32850 Invalid suggestion in Kotlin code
  • KT-32866 tests in Atrium do not compile with new type inference
  • KT-33012 Proper capturing of star projections with recursive types
  • KT-33102 Fake overrides aren't created for properties
  • KT-33152 Type inference fails when lambda with generic argument type is present
  • KT-33166 NI: TYPE_MISMATCH for specific case with when expression and one branch throwing exception
  • KT-33171 TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER with object convention invoke direct call on property delegation
  • KT-33240 Generated overloads for @JvmOverloads on open methods should be final
  • KT-33545 NI: Error type encountered: NonFixed: TypeVariable(T) (StubType)
  • KT-33988 Low priority candidates doesn't match when others fail
  • KT-34128 Internal compiler error ReenteringLazyValueComputationException in the absence of right parenthesis
  • KT-34140 Function with contract doesn't smartcast return value in lambda
  • KT-34314 There is no an error diagnostic about type inference failed (impossible to infer type parameters) on callable references
  • KT-34335 A lambda argument without a type specifier is inferred to Nothing, if it's passed to a function, declaration of which contains vararg (e.g. Any)
  • KT-34501 if-expression infers Any when Number? is expected
  • KT-34708 Couldn't transform method node: emit$$forInline (try-catch in a Flow.map)
  • KT-34729 NI: type mismatch error is missed for generic higher-order functions
  • KT-34830 Type inference fails when using an extension method with “identical JVM signature” as method reference
  • KT-34857 “Illegal resolved call to variable with invoke” with operator resolved to extension property invoke
  • KT-34891 CompilationException: Failed to generate expression: KtLambdaExpression (Error type encountered)
  • KT-34925 MPP, IDE: False positive warning NO_REFLECTION_IN_CLASS_PATH in common code
  • KT-35020 “Type checking has run into a recursive problem” for overloaded generic function implemented using expression body syntax
  • KT-35064 NI: The new inference has overload resolution ambiguity on passing a callable reference for extension functions (> 1 candidates)
  • KT-35207 Incorrect generic signature in annotations when KClass is used as a generic parameter
  • KT-35210 NI: OnlyInputTypes check fails for types with captured ones
  • KT-35213 NI: overload resolution ambiguity for callable reference with defined LHS
  • KT-35226 Forbid spread operator in signature-polymorphic calls
  • KT-35306 Non-applicable call for builder inference for nested builder functions which return generic types that are wrapped.
  • KT-35337 IllegalStateException: Failed to generate expression: KtLambdaExpression
  • KT-35398 NI, IDE: Duplicate warning message JAVA_CLASS_ON_COMPANION in argument position
  • KT-35469 Change behavior of signature-polymorphic calls to methods with a single vararg parameter, to avoid wrapping the argument into another array
  • KT-35487 Type safety problem because of lack of captured conversion against nullable type argument
  • KT-35494 NI: Multiple duplicate error diagnostics (in IDE popup) with NULL_FOR_NONNULL_TYPE
  • KT-35514 Type inference failure with out type and if-else inside lambda
  • KT-35517 TYPE_MISMATCH error duplication for not Boolean condition in if-expression
  • KT-35535 Illegal callable reference receiver allowed in new inference
  • KT-35578 Diagnostics are sometimes duplicated
  • KT-35602 NI doesn't approximate star projections properly for self types
  • KT-35658 NI: Common super type between Inv<A!>, Inv<A?> and Inv is Inv<out A?>, not Inv<A!> (as old inference)
  • KT-35668 NI: the lack of fixing to Nothing problem (one of the bugs: the lack of smartcast through cast of Nothing? to Nothing after elvis)
  • KT-35679 Type safety problem because several equal type variables are instantiated with a different types
  • KT-35684 NI: “IllegalStateException: Expected some types” from builder-inference about intersecting empty types on trivial code
  • KT-35814 Inference fails to infer common upper type for java types
  • KT-35834 Do not declare checked exceptions in JVM bytecode when using delegation to Kotlin interfaces
  • KT-35920 NI allows callable references prohibited in old inference
  • KT-35943 NI: IllegalStateException: No error about uninferred type parameter
  • KT-35945 Using Polymorphism and Type Inference the compiler fails having a Type with Type with Type
  • KT-35992 Wrong overload resolution with explicit type arguments if KFunction and type parameter once nullable and once non-nullable
  • KT-36001 “IllegalStateException: Error type encountered” with elvis in generic function
  • KT-36002 KotlinFrontEndException: Exception while analyzing expression
  • KT-36065 Type inference failed for generic function invoked on implicitly nullable variable created from Java
  • KT-36066 Type inference problem in compiler
  • KT-36101 False positive IMPLICIT_NOTHING_AS_TYPE_PARAMETER with suspend lambdas
  • KT-36146 Drop support of language version 1.0/1.1, deprecate language version 1.2
  • KT-36192 Redundant smart cast for overloaded functions
  • KT-36202 NI: false positive “NON_APPLICABLE_CALL_FOR_BUILDER_INFERENCE” with elvis operator in lambda
  • KT-36220 NI: false positive NON_APPLICABLE_CALL_FOR_BUILDER_INFERENCE if one use cannot resolve
  • KT-36221 NI: UnsupportedOperationException: “no descriptor for type constructor” with vararg parameter when set or get methods of element passed as function reference
  • KT-36264 NI: unstable smart cast changes results of call resolution
  • KT-36279 OI: Type inference fails when omitting explicit name of the lambda parameter
  • KT-36298 Failure to resolve return type of extension property on function literal
  • KT-36317 TYPE_MISMATCH diagnostic error duplication for not Boolean condition in do-while-loop-statement
  • KT-36338 Forbid IR backend usage with unsupported language / API version
  • KT-36371 Incorrect null check with NI and builder inference in generic context
  • KT-36644 Stop discrimination of prerelease compiler version in Kotlin plugin
  • KT-36745 NI: “Expected some types” with unresolved class reference
  • KT-36776 Treat special constructions (if, when, try) as a usual calls when there is expected type
  • KT-36818 NI: the lack of smartcast from Nothing returning “when” branch
  • KT-37123 Cycling lambda signature errors in Observable.combineLatest
  • KT-37146 Type inference can't resolve plus operator
  • KT-37189 Wrong type inferred with class with two types as argument
  • KT-37295 NI: Passing function with wrong returning type by reference is not shown as error
  • KT-37345 Wrong non-null type assertion when using Sequence and yield
  • KT-37429 Type inference failed: Not enough information to infer parameter with java streams
  • KT-37480 “None of the following candidates can be called” when compiling but no error in IDEA

IDE

  • KT-33573 IDE runs platform-specific checkers on common code even if the project doesn't target the corresponding platform
  • KT-35823 IDE settings: deprecated values of language / API version look like regular ones
  • KT-35871 NPE in LightMethodBuilder
  • KT-36034 Kotlin 1.3.70 creates file kotlinCodeInsightSettings.xml with user-level settings under .idea
  • KT-36084 “Join lines” should remove trailing comma
  • KT-36460 IDE highlighting: Undo on inspection breaks analysis inside top-level property initializer
  • KT-36712 Use new annotation highlighting API
  • KT-36917 Caret has incorrect position after pressing enter on line with named argument

IDE. Code Style, Formatting

  • KT-36387 Formatter: “Chained Function Calls” formats property chains
  • KT-36393 Incorrect trailing comma insertion for boolean operator expression
  • KT-36466 Formatter: “Chained Function Calls” with “Wrap first call” wrap single method call

IDE. Completion

  • KT-16531 Error type displayed in completion for the result of buildSequence
  • KT-32178 Autocompletion of ‘suspend’ should not add the ‘fun’ keyword when writing a function type
  • KT-34582 Remove kotlin.coroutines.experimental from autocompletion
  • KT-35258 Completion problems with enabled MixedNamedArgumentsInTheirOwnPosition feature

IDE. Debugger

  • KT-12016 Step over inside inline function lambda argument steps into inline function body
  • KT-14296 Can't step over inlined functions of iterator
  • KT-14869 Debugger: always steps into inlined lambda after returning from function
  • KT-15652 Step over inline function call stops at Thread.dispatchUncaughtException() in case of exceptions
  • KT-34905 Debugger: “Step over” steps into inline function body if lambda call splitted on several lines
  • KT-35354 ClassCastException in evaluate window

IDE. Gradle. Script

  • KT-36703 .gradle.kts: Change text for out of project scripts

IDE. Hints

  • KT-37537 IDE is missing or swallowing keystrokes when hint popups are displayed

IDE. Hints. Parameter Info

  • KT-14523 Weird parameter info tooltip for map.getValue type arguments

IDE. Inspections and Intentions

New Features

  • KT-33384 Intention to switch between single-line/multi-line lambda
  • KT-34690 Support intention Convert lambda to reference for qualified references
  • KT-35639 False negative inspection “redundant internal modifier” inside private class
  • KT-36256 Implement migration for WarningOnMainUnusedParameter
  • KT-36257 Implement migration for ProhibitRepeatedUseSiteTargetAnnotations
  • KT-36258 Implement migration for ProhibitUseSiteTargetAnnotationsOnSuperTypes
  • KT-36260 Implement migration for ProhibitJvmOverloadsOnConstructorsOfAnnotationClasses
  • KT-36261 Implement migration for ProhibitTypeParametersForLocalVariables
  • KT-36262 Implement migration for RestrictReturnStatementTarget

Fixes

  • KT-14001 “Convert lambda to reference” results in failed type inference
  • KT-14781 Import of aliased type is inserted when deprecation replacement contains typealias
  • KT-16907 “Convert to lambda reference” intention is erroneously shown for suspending lambda parameters, producing bad code
  • KT-24869 False positive inspection “Redundant ‘suspend’ modifier”
  • KT-24987 Implicit (unsafe) cast from dynamic to DONT_CARE
  • KT-27511 “Remove explicit type arguments” suggestion creates incorrect code
  • KT-28415 False positive inspection “Remove explicit type arguments” with a callable reference
  • KT-30831 False positive Remove explicit type arguments with generic type constructor with init block
  • KT-31050 False positive “Boolean literal argument without parameter name” inspection using expect class
  • KT-31559 Type inference failed: Not enough information to infer parameter K
  • KT-32093 NI: IDE suggests to use property access syntax instead of getter method
  • KT-33098 False positive “Remove explicit type arguments” with “Enable NI for IDE” and Java generic class constructor invocation with nullable argument
  • KT-33685 ReplaceWith does not add type parameter for function taking generic lambda with receiver
  • KT-34511 kotlin.KotlinNullPointerException after using intention Replace Java Map.forEach with Kotlin's forEach for Map with Pairs as keys
  • KT-34686 False positive “Constructor parameter is never used as a property” if property is used as a reference
  • KT-35451 Type inference fails after applying false positive inspection "Remove explicit type arguments "
  • KT-35475 Applying intention “Redundant curly braces in string template” for label references change semantic
  • KT-35528 Intention Replace 'when' with 'if' produces wrong code if expression subject is a variable declaration
  • KT-35588 Applying “Lift assignment out of ‘if’” for if statement that has lambda plus assignment and ‘return’ leads to type mismatch
  • KT-35604 Too long quickfix message for “modifier ‘open’ is not applicable to ‘companion object’”
  • KT-35648 False negative intention “Remove argument name” on named positional arguments
  • KT-36160 False positive “Constructor has non-null self reference parameter” with vararg parameter of class
  • KT-36171 intention “Replace ‘get’ call with indexing operator” works incorrectly with spread operator
  • KT-36255 Implement migration tool for 1.4
  • KT-36357 “Lift assignment out of ‘if’” breaks code for oneliner function
  • KT-36360 OI: False positive “remove explicit type arguments” for SequenceScope leads to compiler failure with “Type inference failed”
  • KT-36369 “To raw string literal” intention is not available if string content starts with newline symbol \n

IDE. Multiplatform

  • KT-36978 Infinite “org.jetbrains.kotlin.idea.caches.resolve.KotlinIdeaResolutionException: Kotlin resolution encountered a problem while analyzing KtFile” exceptions in hierarchical multiplatform projects

IDE. Navigation

  • KT-30628 Navigation from Java sources to calls on Kotlin function annotated with @JvmOverloads that have optional arguments omitted leads to decompiled code

IDE. Refactorings

New Features

  • KT-26999 Inspection for unused main parameter in Kotlin 1.3
  • KT-33339 Refactor / Move is disabled for Kotlin class selected together with Kotlin file

Fixes

  • KT-22131 “Extract method” refactoring treats smart casted variables as non-local
  • KT-24615 “Extract property” generates useless extension property
  • KT-26047 Refactor -> Rename: Overridden method renaming in generic class doesn't rename base method
  • KT-26248 “Refactor -> Inline variable” breaks callable references
  • KT-31401 Refactor / Inlining function reference in Java method with Runnable argument produces compile error
  • KT-33709 Inline variable: NONE_APPLICABLE with overloaded generic Java method with SAM conversion
  • KT-34190 Inline Function: False positive error “not at the end of the body” with anonymous object
  • KT-35235 Unable to move multiple class files to a different package
  • KT-35463 ClassCastException during moving .kt file with one single class to the other folder in Android Studio
  • KT-36312 Refactor Move refactoring to get it ready for MPP-related fixes

IDE. Run Configurations

  • KT-34503 “Nothing here” is shown as a drop-down list for “Run test” gutter icon for a multiplatform test with expect/actual parts in platform-agnostic code
  • KT-36093 Running Gradle java tests are broken for Gradle older than 4.0 (Could not set unknown property ‘testClassesDirs’ for task ‘:nonJvmTestIdeSupport’)

JavaScript

  • KT-23284 Reified type arguments aren't substituted when invoking inline val value

Libraries

  • KT-26654 Remove deprecated ‘mod’ operators
  • KT-27856 Add contracts to Timing.kt lambdas
  • KT-28356 Fail fast in Regex.findAll on an invalid startIndex
  • KT-29748 Declare kotlin.reflect.KType in kotlin-stdlib-common
  • KT-30360 Deprecate conversions of floating point types to integral types lesser than Int
  • KT-32855 KTypeParameter is available in common code, but not available in Native
  • KT-35216 <T : AutoCloseable?, R> T.use and <T : Closeable?, R> T.use should have contracts
  • KT-36082 JS Regex.find does not throw IndexOutOfBoundsException on invalid start index
  • KT-36083 Extract kotlin.coroutines.experimental.* packages to a separate compatibility artifact

Reflection

  • KT-30071 Implement KTypeProjection.toString
  • KT-35991 Embed Proguard/R8 rules in kotlin-reflect artifact jar

Tools. CLI

  • KT-28475 java.sql module not available in kotlinc scripts on Java 9+ due to use of Bootstrap Classloader

Tools. Gradle. JS

  • KT-34989 NodeJs is not re-downloaded if the node binary gets accidentally deleted
  • KT-35465 Gradle, JS: Gradle tooling for IR compiler
  • KT-36472 Kotlin/JS Gradle plugin iterates over all Gradle tasks, triggering their lazy configuration
  • KT-36488 Gradle, JS, IR: Publishing from JS plugin

Tools. Gradle. Multiplatform

  • KT-37264 In intermediate common source sets, internals are not visible from their dependsOn source sets during Gradle build

Tools. Gradle. Native

  • KT-36804 In a project with Kotlin/Native targets and kotlinx.serialization, IDE import fails: Could not create task ‘...’. / Cannot change dependencies of configuration after it has been resolved.

Tools. J2K

  • KT-20120 J2K: Java 9 forRemoval and since methods of Deprecated are not processed

Tools. Scripts

  • KT-35414 Switch for -Xexpression to -expression/-e cli argument syntax for JVM cli compiler in 1.4