Skip to content

Releases: JetBrains/kotlin

1.1.50

22 Sep 13:07

Choose a tag to compare

Android

  • KT-14800 Kotlin Lint: @SuppressLint annotation on local variable is ignored
  • KT-16600 False positive "For methods, permission annotation should specify one of value, anyOf or allOf"
  • KT-16834 Android Lint: Bogus warning on @SetParam:StringRes
  • KT-17785 Kotlin Lint: "Incorrect support annotation usage" does not pick the value of const val
  • KT-18837 Android Lint: Collection.removeIf is not flagged when used on RealmList
  • KT-18893 Android support annotations (ColorInt, etc) cannot be used on properties: "does not apply for type void"
  • KT-18997 KLint: False positive "Could not find property setter method setLevel on java.lang.Object" if using elvis with return on RHS
  • KT-19671 UAST: Parameter annotations not provided for val parameters

Compiler

Performance Improvements

  • KT-17963 Unnecessary boxing in case of primitive comparison to object
  • KT-18589 'Equality check can be used instead of elvis' produces code that causes boxing
  • KT-18693 Optimize in-expression with optimizable range in RHS
  • KT-18721 Improve code generation for if-in-primitive-literal expression ('if (expr in low .. high)')
  • KT-18818 Optimize null cases in when statement to avoid Intrinsics usage
  • KT-18834 Do not create ranges for 'x in low..high' where type of x doesn't match range element type
  • KT-19029 Use specialized equality implementations for 'when'
  • KT-19149 Use 'for-in-until' loop in intrinsic array constructors
  • KT-19252 Use 'for-in-until' loop for 'for-in-rangeTo' loops with constant upper bounds when possible
  • KT-19256 Destructuring assignment generates redundant code for temporary variable nullification
  • KT-19457 Extremely slow analysis for file with deeply nested lambdas

Fixes

  • KT-10754 Bogus unresolved extension function
  • KT-11739 Incorrect error message on getValue operator with KProperty parameter
  • KT-11834 INAPPLICABLE_LATEINIT_MODIFIER is confusing for a generic type parameter with nullable (default) upper bound
  • KT-11963 Exception: recursive call in a lazy value under LockBasedStorageManager
  • KT-12737 Confusing error message when calling extension function with an implicit receiver, passing value parameter of wrong type
  • KT-12767 Too much unnecessary information in "N type arguments expected" error message
  • KT-12796 IllegalArgumentException on referencing inner class constructor on an outer class instance
  • KT-12899 Platform null escapes if passed as an extension receiver to an inline function
  • KT-13665 Generic componentN() functions should provide better diagnostics when type cannot be inferred
  • KT-16223 Confusing diagnostic for local inline functions
  • KT-16246 CompilationException caused by intersection type overload and wrong type parameter
  • KT-16746 DslMarker doesn't work with typealiases
  • KT-17444 Accessors generated for private file functions should respect @JvmName
  • KT-17464 Calling super constructor with generic function call in arguments fails at runtime
  • KT-17725 java.lang.VerifyError when both dispatch receiver and extension receiver have smart casts
  • KT-17745 Unfriendly error message on creating an instance of interface via typealias
  • KT-17748 Equality for class literals of primitive types is not preserved by reification
  • KT-17879 Comparing T::class from a reified generic with a Class<> and KClass<> variable in when statement is broken
  • KT-18356 Argument reordering in super class constructor call for anonymous object fails with VerifyError
  • KT-18819 JVM BE treats 'if (a in low .. high)' as 'if (a >= low && a <= high)', so 'high' can be non-evaluated
  • KT-18855 Convert "Remove at from annotation argument" inspection into compiler error & quick-fix
  • KT-18858 Exception within typealias expansion with dynamic used as one of type arguments
  • KT-18902 NullPointerException when using provideDelegate with properties of the base class at runtime
  • KT-18940 REPEATED_ANNOTATION is reported on wrong location for typealias arguments
  • KT-18944 Type annotations are lost for dynamic type
  • KT-18966 Report full package FQ name in compilation errors related to visibility
  • KT-18971 Missing non-null assertion for platform type passed as a receiver to the member extension function
  • KT-18982 NoSuchFieldError on access to imported object property from the declaring object itself
  • KT-18985 Too large highlighting range for UNCHECKED_CAST
  • KT-19058 VerifyError: no CHECKAST on dispatch receiver of the synthetic property defined in Java interface
  • KT-19100 VerifyError: missing CHECKCAST on extension receiver of the extension property
  • KT-19115 Report warnings on usages of JSR 305-annotated declarations which rely on incorrect or missing nullability information
  • KT-19128 java.lang.VerifyError with smart cast to String from Any
  • KT-19180 Bad SAM conversion of Java interface causing ClassCastException: [...] cannot be cast to kotlin.jvm.functions.Function1
  • KT-19205 Poor diagnostic message for deprecated class referenced through typealias
  • KT-19367 NSFE if property with name matching companion object property name is referenced within lambda
  • KT-19434 Object inheriting generic class with a reified type parameter looses method annotations
  • KT-19475 AnalyserException in case of combination of while (true) + stack-spilling (coroutines/try-catch expressions)
  • KT-19528 Compiler exception on inline suspend function inside a generic class
  • KT-19575 Deprecated typealias is not marked as such in access to companion object
  • KT-19601 UPPER_BOUND_VIOLATED reported on type alias expansion in a recursive upper bound on a type parameter
  • KT-19814 Runtime annotations for open suspend function are not generated correctly
  • KT-19892 Overriding remove method on inheritance from TreeSet
  • KT-19910 Nullability assertions removed when inlining an anonymous object in crossinline lambda
  • KT-19985 JSR 305: nullability qualifier of Java function return type detected incorrectly in case of using annotation nickname

IDE

New Features

  • KT-6676 Show enum constant ordinal in quick doc like in Java
  • KT-12246 Kotlin source files are not highlighted in Gradle build output in IntelliJ

Performance Improvements

  • KT-19670 When computing argument hints, don't resolve call if none of the arguments are unclear expressions

Fixes

Read more

1.1.4-3

30 Aug 08:58

Choose a tag to compare

  • KT-18062 SamWithReceiver compiler plugin not used by IntelliJ for .kt files
  • KT-18497 Gradle Kotlin Plugin does not work with the gradle java-library plugin
  • KT-19276 Console spam when opening idea-community project in debug IDEA
  • KT-19433 [Coroutines + Kapt3] Assertion failed in ClassClsStubBuilder.createNestedClassStub
  • KT-19680 kapt3 & Parcelize: Compilation error
  • KT-19687 Kotlin 1.1.4 noarg plugin breaks with sealed classes
  • KT-19700 Kapt error after updating to 1.1.4 - stub adds type parameters where there are none
  • KT-19713 Mocking of final named suspend methods with mockito fails
  • KT-19729 kapt3: not always including argument to @javax.inject.Named in generated stubs
  • KT-19759 "Convert to expression body" is not shown in 162 / AS23 branches for multi-liners
  • KT-19767 NPE caused by Map<String, Boolean>?.get
  • KT-19769 PerModulePackageCacheService calls getOrderEntriesForFile() for every file, even those that can't affect Kotlin resolve
  • KT-19774 Provide an opt-out flag for separate classes directories (Gradle 4.0+)
  • KT-19847 if an imported library already exists it should be redetected during gradle import

1.1.4-2

18 Aug 15:06

Choose a tag to compare

  • KT-19679 CompilationException: Couldn't inline method call 'methodName' into...
  • KT-19690 Lazy field in interface default method leads to ClassFormatError
  • KT-19716 Quickdoc Ctrl+Q broken while browsing code completion list Ctrl-Space
  • KT-19717 Library kind incorrectly detected for vertx-web in Kotlin project
  • KT-19723 "Insufficient maximum stack size" during compilation

1.1.4

15 Aug 06:21

Choose a tag to compare

Android

New Features

  • KT-11048 Android Extensions: cannot evaluate expression containing generated properties

Performance Improvements

  • KT-10542 Android Extensions: No cache for Views
  • KT-18250 Android Extensions: Allow to use SparseArray as a View cache

Fixes

  • KT-11051 Android Extensions: completion of generated properties is unclear for ambiguous ids
  • KT-14086 Android-extensions not generated using flavors dimension
  • KT-14912 Lint: "Code contains STOPSHIP marker" ignores suppress annotation
  • KT-15164 Kotlin Lint: problems in delegate expression are not reported
  • KT-16934 Android Extensions fails to compile when importing synthetic properties for layouts in other modules
  • KT-17641 Problem with Kotlin Android Extensions and Gradle syntax
  • KT-17783 Kotlin Lint: quick fixes to add inapplicable @RequiresApi and @SuppressLint make code incompilable
  • KT-17786 Kotlin Lint: "Surround with if()" quick fix is not suggested for single expression get()
  • KT-17787 Kotlin Lint: "Add @TargetApi" quick fix is not suggested for top level property accessor
  • KT-17788 Kotlin Lint: "Surround with if()" quick fix corrupts code in case of destructuring declaration
  • KT-17890 [kotlin-android-extensions] Renaming layout file does not rename import
  • KT-18012 Kotlin Android Extensions generates @NotNull properties for views present in a configuration and potentially missing in another
  • KT-18545 Accessing to synthetic properties on smart casted Android components crashed compiler

Compiler

New Features

  • KT-10942 Support meta-annotations from JSR 305 for nullability qualifiers
  • KT-14187 Redundant "is" check is not detected
  • KT-16603 Support inline suspend function
  • KT-17585 Generate state machine for named functions in their bodies

Performance Improvements

  • KT-3098 Generate efficient comparisons
  • KT-6247 Optimization for 'in' and '..'
  • KT-7571 Don't box Double instance to call hashCode on Java 8
  • KT-9900 Optimize range operations for 'until' extension from stdlib
  • KT-11959 Unnceessary boxing/unboxing due to Comparable.compareTo
  • KT-12158 Optimize away boxing when comparing nullable primitive type value to primitive value
  • KT-13682 Reuse StringBuilder for concatenation and string interpolation
  • KT-14323 IntelliJ lockup when using Apache Spark UDF
  • KT-14375 Kotlin compiler failure with spark when creating a flexible type for scala.Function22
  • KT-15235 Escaped characters in template strings are generating inefficient implementations
  • KT-17280 Inline constant expressions in string templates
  • KT-17903 Generate 'for-in-indices' as a precondition loop
  • KT-18157 Optimize out trivial INSTANCEOF checks
  • KT-18162 Do not check nullability assertions twice for effectively same value
  • KT-18164 Do not check nullability for values that have been already checked with !!
  • KT-18478 Unnecessary nullification of bound variables
  • KT-18558 Flatten nested string concatenation
  • KT-18777 Unnecessary boolean negation generated for 'if (expr !in range)'

Fixes

  • KT-1809 Confusing diagnostics when wrong number of type arguments are specified and there are several callee candiates
  • KT-2007 Improve diagnostics when + in not resolved on a pair of nullable ints
  • KT-5066 Bad diagnostic message for ABSTRACT_MEMBER_NOT_IMPLEMENTED for (companion) object
  • KT-5511 Inconsistent handling of inner enum
  • KT-7773 Disallow to explicitly extend Enum class
  • KT-7975 Unclear error message when redundant type arguments supplied
  • KT-8340 vararg in a property setter must be an error
  • KT-8612 Incorrect error message for var extension property without getter or setter
  • KT-8829 Type parameter of a class is not resolved in the constructor parameter's default value
  • KT-8845 Bogus diagnostic on infix operation "in"
  • KT-9282 Improve diagnostic on overload resolution ambiguity when a nullable argument is passed to non-null parameter
  • KT-10045 Not specific enough compiler error message in case of trying to call overloaded private methods
  • KT-10164 Incorrect error message for external inline method
  • KT-10248 Smart casts: Misleading error on overloaded function call
  • KT-10657 Confusing diagnostic when trying to invoke value as a function
  • KT-10839 Weird diagnostics on callable reference of unresolved class
  • KT-11119 Confusing error message when overloaded method is called on nullable receiver
  • KT-12408 Generic information lost for override values
  • KT-12551 Report "unused expression" on unused bound double colon expressions
  • KT-13749 Error highlighting range for no 'override' modifier is bigger than needed
  • KT-14598 Do not report "member is final and cannot be overridden" when overriding something from final class
  • KT-14633 "If must have both main and else branches" diagnostic range is too high
  • KT-14647 Confusing error message "'@receiver:' annotations could be applied only to extension function or extension property declarations"
  • KT-14927 TCE in QualifiedExpressionResolver
  • KT-15243 Report deprecation on usages of type alias expanded to a deprecated class
  • KT-15804 Prohibit having duplicate parameter names in functional types
  • KT-15810 destructuring declarations don't work in scripts on the top level
  • KT-15931 IllegalStateException: ClassDescriptor of superType should not be null: T by a
  • KT-16016 Compiler failure with NO_EXPECTED_TYPE
  • KT-16448 Inline suspend functions with inlined suspend invocations are miscompiled (VerifyError, ClassNotFound)
  • KT-16576 Wrong code generated with skynet benchmark
  • KT-17007 Kotlin is not optimizing away unreachable code based on const vals
  • KT-17188 Do not propose to specify constructor invocation for classes without an accessible constructor
  • KT-17611 Unnecessary "Name shadowed" warning on parameter of local function or local class member
  • KT-17692 NPE in compiler when calling KClass.java on function result of type Unit
  • KT-17820 False "useless cast" when target type is flexible
  • KT-17972 Anonymous class generated from lambda captures its outer and tries to set nonexistent this$0 field.
  • [KT-18029](https:...
Read more

1.2-M2

09 Aug 13:38

Choose a tag to compare

Compiler

Breaking change: Java-default method calls

Kotlin interface members overriding Java-default methods while targeting JVM 1.6 now produce an error on super calls requiring to be compiled with -jvm-target 1.8 option

Standard library

Revised windowed/pairwise operations

  • windowed function now has its step parameter defaulting to 1.
    It also gets an additional optional parameter partialWindows, which controls what to do with incomplete windows in the end. By default it is false, which means incomplete windows are dropped.
  • pairwise function name was too confusing, it was unclear how it paired the elements together. Now it is called zipWithNext, so it is more clear that each element is zipped with the next element in a collection.

Common math operations in the standard library

There was a longstanding request to support math operations in the standard library KT-4900. Until now one had to resort to math functions and constants from java.lang.Math class in JVM platform and to kotlin.js.Math which exposed native JS Math functions to Kotlin code in JS platform.
But now we're introducing the following groups of API in the kotlin.math package:

  • constants: PI and E;
  • trigonometric: cos, sin, tan and inverse of them: acos, asin, atan, atan2;
  • hyperbolic: cosh, sinh, tahn;
  • exponentation: pow (an extension function), sqrt, hypot, exp, expm1;
  • logarithms: log, log2, log10, ln, ln1p;
  • rounding:
    - ceil, floor, truncate, round (half to even) functions;
    - roundToInt, roundToLong (half to integer) extension functions;
  • sign and absolute value:
    - abs and sign functions;
    - absoluteValue and sign extension properties;
    - withSign extension function;
  • max and min of two values;
  • binary representation:
    - ulp extension property;
    - nextUp, nextDown, nextTowards extension functions;
    - toBits, toRawBits, Double.fromBits (these are in the kotlin package).

Previous releases

This release also includes fixes and improvements from 1.2-M1 and 1.1.4-eap-54 releases

1.1.3-2

04 Jul 17:02

Choose a tag to compare

  • Noarg compiler plugin reverted to 1.1.2 behavior: by default, it will not run any initialization code
    from the generated default constructor. If you want to run initializers, you need to enable
    the corresponding option as described in the documentation.
    Note that if a @noarg class has initializers that depend on constructor parameters, you will get incorrect
    compiler behavior, so you shouldn't enable this option if you have such classes in your project.
    This resolves KT-18667 and KT-18668.
  • KT-18689 Incorrect bytecode generated when passing a bound member reference to an inline function with default argument values
  • KT-18377 Syntax error while generating kapt stubs
  • KT-18411 Slow debugger step-in into inlined function
  • KT-18687 Deadlock in resolve with Kotlin 1.1.3
  • KT-18726 Frequent UI hangs in 2017.2 EAPs

1.2-M1

27 Jun 17:06

Choose a tag to compare

1.2-M1 Pre-release
Pre-release

1.2-M1

Language changes

  • Array literals, which can be used in annotation arguments

Compiler

  • KT-6884 KT-17910 Support default values for functional parameters in inline functions
  • KT-15894 Change the way how singleton objects are initialized in order not to contradict JVM spec
  • KT-17929 Illegal smart cast was allowed after assignment in try block

Standard Library

  • KT-8823 MutableList.fill extension

  • KT-9010 MutableList.shuffle and List.shuffled extensions

  • KEEP-11 KT-9151 KT-10021 KT-11026
    chunked and windowed: extension functions to support
    partitioning collections into blocks of the given size and
    taking a window of the given size and moving it along the collection with the given step.

    pairwise extension to get all subsequent pairs in collection

  • KEEP-49 Additional operations and conversion extensions for BigInteger and BigDecimal

  • KT-16447 Make kotlin.text.Regex class serializable

IDE

  • KT-17164 Intention to convert *arrayOf() functions to array literals in annotations

JS

  • Typed arrays are turned on by default

Previous releases

This release also includes the fixes and improvements from
1.1.3 release.

1.1.3

23 Jun 16:05

Choose a tag to compare

1.1.3

Android

New Features

  • KT-12049 Kotlin Lint: "Missing Parcelable CREATOR field" could suggest "Add implementation" quick fix
  • KT-16712 Show warning in IDEA when using Java 1.8 api in Android
  • KT-16843 Android: provide gutter icons for resources like colors and drawables
  • KT-17389 Implement Intention "Add Activity / BroadcastReceiver / Service to manifest"
  • KT-17465 Add intentions Add/Remove/Redo parcelable implementation

Fixes

  • KT-14970 ClassCastException: butterknife.lint.LintRegistry cannot be cast to com.android.tools.klint.client.api.IssueRegistry
  • KT-17287 Configure kotlin in Android Studio: don't show menu Choose Configurator with single choice
  • KT-17288 Android Studio: please remove menu item Configure Kotlin (JavaScript) in Project
  • KT-17289 Android Studio: Hide "Configure Kotlin" balloon if Kotlin is configured from a kt file banner
  • KT-17291 Android Studio 2.4: Cannot get property 'metaClass' on null object error after Kotlin configuring
  • KT-17610 "Unknown reference: kotlinx"

Compiler

New Features

  • KT-11167 Support compilation against JRE 9
  • KT-17497 Warn about redundant else branch in exhaustive when

Performance Improvements

  • KT-7931 Optimize iteration over strings/charsequences on JVM
  • KT-10848 Optimize substitution of inline function with default parameters
  • KT-12497 Optimize inlined bytecode for functions with default parameters
  • KT-17342 Optimize control-flow for case of many variables
  • KT-17562 Optimize KtFile::isScript

Fixes

  • KT-4960 Redeclaration is not reported for type parameters of interfaces
  • KT-5160 No warning when a lambda parameter hides a variable
  • KT-5246 is check fails on cyclic type parameter bounds
  • KT-5354 Wrong label resolution when label name clash with fun name
  • KT-7645 Prohibit default value for catch-block parameter
  • KT-7724 Can never import private member
  • KT-7796 Wrong scope for default parameter value resolution
  • KT-7984 Unexpected "Unresolved reference" in a default value expression in a local function
  • KT-7985 Unexpected "Unresolved reference to a type parameter" in a default value expression in a local function
  • KT-8320 It should not be possible to catch a type parameter type
  • KT-8877 Automatic labeling doesn't work for infix calls
  • KT-9251 Qualified this does not work with labeled function literals
  • KT-9551 False warning "No cast needed"
  • KT-9645 Incorrect inspection: No cast Needed
  • KT-9986 'null as T' should be unchecked cast
  • KT-10397 java.lang.reflect.GenericSignatureFormatError when generic inner class is mentioned in function signature
  • KT-11474 ISE: Requested A, got foo.A in JavaClassFinderImpl on Java file with package not matching directory
  • KT-11622 False "No cast needed" when ambiguous call because of smart cast
  • KT-12245 Code with annotation that has an unresolved identifier as a parameter compiles successfully
  • KT-12269 False "Non-null type is checked for instance of nullable type"
  • KT-12683 A problem with is operator and non-reified type-parameters
  • KT-12690 USELESS_CAST compiler warning may break code when fix is applied
  • KT-13348 Report useless cast on safe cast from nullable type to the same not null type
  • KT-13597 No check for accessing final field in local object in constructor
  • KT-13997 Incorrect "Property must be initialized or be abstract" error for property with external accessors
  • KT-14381 Possible val reassignment not detected inside init block
  • KT-14564 java.lang.VerifyError: Bad local variable type
  • KT-14801 Invoke error message if nested class has the same name as a function from base class
  • KT-14977 IDE doesn't warn about checking null value of variable that cannot be null
  • KT-15085 Label and function naming conflict is resolved in unintuitive way
  • KT-15161 False warning "no cast needed" for array creation
  • KT-15480 Cannot destruct a list when "if" has an "else" branch
  • KT-15495 Internal typealiases in the same module are inaccessible on incremental compilation
  • KT-15566 Object member imported in file scope used in delegation expression in object declaration should be a compiler error
  • KT-16016 Compiler failure with NO_EXPECTED_TYPE
  • KT-16426 Return statement resolved to function instead of property getter
  • KT-16813 Anonymous objects returned from private-in-file members should behave as for private class members
  • KT-16864 Local delegate + ad-hoc object leads to CCE
  • KT-17144 Breakpoint inside when
  • KT-17149 Incorrect warning "Kotlin: This operation has led to an overflow"
  • KT-17156 No re-parse after lambda was converted to block
  • KT-17318 Typo in DSL Marker message cant
  • KT-17384 break/continue expression in inlined function parameter argument causes compilation exception
  • KT-17457 Suspend + LongRange couldn't transform method node issue in Kotlin 1.1.1
  • KT-17479 val reassign is allowed via explicit this receiver
  • KT-17560 Overload resolution ambiguity on semi-valid class-files generated by Scala
  • KT-17572 try-catch expression in inlined function parameter argument causes compilation exception
  • KT-17573 try-finally expression in inlined function parameter argument fails with VerifyError
  • KT-17588 Compiler error while optimizer tries to get rid of captured variable
  • KT-17590 conditional return in inline function parameter argument causes compilation exception
  • KT-17591 non-conditional return in inline function parameter argument causes compilation exception
  • KT-17613 'this' expression referring to deprecated class instance is highlighted as deprecated in IDE
  • KT-18358 Keep smart pointers instead of PSI elements in JavaElementImpl and its descendants

IDE

New Features

  • KT-7810 Separate icon for abstract class
  • KT-8617 Recognize TODO method usages and highlight them same as TODO-comment
  • KT-12629 Add rainbow/semantic-highlighting for local variables
  • KT-14109 support parameter hints in idea plugin
  • KT-16645 Support inlay type hints for implicitly typed vals, properties, and functions
  • [KT-17807](https://youtrack...
Read more

1.1.2-5

12 Jun 17:28

Choose a tag to compare

1.1.2-5

  • KT-18026 Fixed regression with coroutine support in 1.1.2-4
  • Fix for the Databinding issue where the kapt task started too early, not letting the Databinding pre-process the project
  • Add support for com.android.feature plugin
  • Fix UnsupportedOperationException caused by mutation of FileCollection in Gradle builds

1.1.2-4

  • Compatibility with Android Build Tools 3.0.0-alpha1 and Android Studio 3.0 Canary 1

1.1.2-3

  • KT-17596 Fixed display of compilation errors in Android Studio

1.1.2-2

  • KT-17610 Fixed enabling Android Extensions IDE support for non-Gradle projects
  • KT-17597 Fixed regression in method reference overload resolution

1.1.2-2

28 Apr 13:19
@4u7 4u7

Choose a tag to compare

  • KT-17597 Pattern::compile resolves to private instance method in 1.1.2