Skip to content

Releases: JetBrains/kotlin

Kotlin 1.1-Beta

19 Jan 09:19
Compare
Choose a tag to compare
Kotlin 1.1-Beta Pre-release
Pre-release

Reflection

  • KT-15540 findAnnotation returns T?, but it throws NoSuchElementException when there is no matching annotation
  • Reflection API in kotlin-reflect library is moved to kotlin.reflect.full package, declarations in the package kotlin.reflect are left deprecated. Please migrate according to the hints provided.

Compiler

Coroutine support

  • KT-15379 Allow invoke on instances of suspend function type inside suspend function
  • KT-15380 Support suspend function type with value parameters
  • KT-15391 Prohibit suspend function type in supertype list
  • KT-15392 Prohibit local suspending function
  • KT-15413 Override regular functions with suspending ones and vice versa
  • KT-15657 Refine dispatchResume convention
  • KT-15662 Prohibit callable references to suspend functions

Diagnostics

  • KT-9630 Cannot create extension function on intersection of types
  • KT-11398 Possible false positive for INACCESSIBLE_TYPE
  • KT-13593 Do not report USELESS_ELVIS_RIGHT_IS_NULL for left argument with platform type
  • KT-13859 Wrong error about using unrepeatable annotation when mix implicit and explicit targets
  • KT-14179 Prohibit to use enum entry as type parameter
  • KT-15097 Inherited platform declarations clash: regression under 1.1 when indirectly inheriting from java.util.Map
  • KT-15287 Kotlin runtime 1.1 and runtime 1.0.x: Overload resolution ambiguity
  • KT-15334 Incorrect "val cannot be reassigned" inside do-while
  • KT-15410 "Protected function call from public-API inline function" for protected constructor call

Kapt3

  • KT-15145 Kapt3: Doesn't compile with multiple errors
  • KT-15232 Kapt3 crash due to java codepage
  • KT-15359 Kapt3 exception while annotation processing (DataBindings AS2.3-beta1)
  • KT-15375 Kapt3 can't find ${env.JDK_18}/lib/tools.jar
  • KT-15381 Unresolved references: R with Kapt3
  • KT-15397 Kapt3 doesn't work with databinding
  • KT-15409 Kapt3 Cannot find the getter for attribute 'android:text' with value type java.lang.String on android.widget.EditText.
  • KT-15421 Kapt3: Substitute types from Psi instead of writing NonExistentClass for generated type names
  • KT-15459 Kapt3 doesn't generate code in test module
  • KT-15524 Kapt3 - Error messages should display associated element information (if available)
  • KT-15713 Kapt3: circular dependencies between Gradke tasks

Exceptions / Errors

  • KT-11401 Error type encountered for implicit invoke with function literal argument
  • KT-12044 Assertion "Rewrite at slice LEXICAL_SCOPE" for 'if' with property references
  • KT-14011 Compiler crash when inlining: lateinit property allRecapturedParameters has not been initialized
  • KT-14868 CCE in runtime while converting Number to Char
  • KT-15364 VerifyError: Bad type on operand stack on ObserverIterator.hasNext
  • KT-15373 Internal error when running TestNG test
  • KT-15437 VerifyError: Bad local variable type on simplest provideDelegate
  • KT-15446 Property reference on an instance of subclass causes java.lang.VerifyError
  • KT-15447 Compiler backend error: "Don't know how to generate outer expression for class"
  • KT-15449 Back-end (JVM) Internal error: Couldn't inline method call
  • KT-15464 Regression: "Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:"
  • KT-15575 VerifyError: Bad type on operand stack

Various issues

  • KT-11962 Super call with default parameters check is generated for top-level function
  • KT-11969 ProGuard issue with private interface methods
  • KT-12795 Write information about sealed class inheritors to metadata
  • KT-13718 ClassFormatError on aspectj instrumentation
  • KT-14162 Support @InlineOnly on inline properties
  • KT-14705 Inconsistent smart casts on when enum subject
  • KT-14917 No way to pass additional java command line options to kontlinc on Windows
  • KT-15112 Compiler hangs on nested lock compilation
  • KT-15225 Scripts: generate classes with names that are valid Java identifiers
  • KT-15411 Unnecessary CHECKCAST bytecode when dealing with null
  • KT-15473 Invalid KFunction byte code signature for callable references
  • KT-15582 Generated bytecode is sometimes incompatible with Java 9
  • KT-15584 Do not mark class files compiled with a release language version as pre-release
  • KT-15589 Upper bound for T in KClass can be implicitly violated using generic function
  • KT-15631 Compiler hang in MethodAnalyzer.analyze() fixed

JavaScript backend

Coroutine support

  • KT-15362 JS: Regex doesn't work (properly) in coroutine
  • KT-15366 JS: error when calling inline function with optional parameters from another module inside coroutine lambda
  • KT-15367 JS: for against iterator with suspend next and hasNext functions does not work
  • KT-15400 suspendCoroutine is missing in JS BE
  • KT-15597 Support non-tail suspend calls inside named suspend functions
  • KT-15625 JS: return statement without value surrounded by try..finally in suspend lambda causes compiler error
  • KT-15698 Move coroutine intrinsics to kotlin.coroutine.intrinsics package

Diagnostics

  • KT-14577 JS: do not report declaration clash when common redeclaration diagnostic applies
  • KT-15136 JS: prohibit inheritance from kotlin Function{N} interfaces

Language features support

  • KT-12194 Exhaustiveness check isn't generated for when expressions in JS at all
  • KT-15590 Support increment on inlined properties

Native / external

  • KT-8081 JS: native inherited class shouldn't require super or primary constructor call
  • KT-13892 JS: restrictions for native (external) functions and properties
  • KT-15307 JS: prohibit inline members inside external declarations
  • KT-15308 JS: prohibit non-abstract members inside external interfaces except nullable properties (with accessors)

Exceptions / Errors

  • KT-7302 KotlinJS - Trait with optional parameter causes compilation error
  • KT-15325 JS: ReferenceError: $receiver is not defined
  • KT-15357 JS: when expression in primary-from-secondary constructor call
  • KT-15435 Call to 'synchronize' crashes JS backend
  • KT-15513 JS: empty do..while loop crashes compiler

Various issues

Read more

Kotlin 1.0.6

27 Dec 16:17
Compare
Choose a tag to compare

Compiler

  • KT-12224 Add a diagnostic message for @JvmOverloads on interface methods
  • KT-14186 Vararg parameters were generated as simple array parameters for Java
  • KT-12664 Inner class was not found when a sub-directory with the same name is present in an outer class directory
  • KT-14408 No-arg constructor should always be generated if all primary constuctor arguments have a default value
  • KT-14469 StackOverflowError at EffectiveVisibilityKt.forVisibility
  • KT-14581 NullPointerException at StackTransformationUtils when inlining extension function to a do-while loop condition
  • KT-14678 Internal error with @JvmOverloads on constructor of inner class
  • KT-14751 Class can't be resolved (related to annotation on types)
  • KT-14774 Incorrect inner class modifier was generated for sealed inner classes

Stdlib

  • KT-14883 Performance tune: Use byte array buffer directly to read the entire contents of a file

JS

  • KT-12976 Print human-friendly error message on wrong modules order
  • KT-13792 Inner class of local class did not capture the enclosing class properly
  • KT-13912 NullPointerException at JsSourceGenerationVisitor when a Lambda with empty if block passed to inline function
  • KT-14535 Fix broken modification of captured variables defined by a destructuring declaration
  • KT-14752 Fix exception while typing @JsName annotation in editor
  • Update JavaScript platform declarations (DOM, Events, etc) to latest spec
  • Types that exist in runtime are now generated as abstract classes while non-existing types are now interfaces

IDE

  • KT-14215 Show members of anonymous objects in File Structure window
  • KT-14217 Support visibility filters in File Structure window
  • Implement Kotlin facet
  • KT-13811 Expose JVM target setting in IntelliJ IDEA plugin compiler configuration UI

Issues fixed

  • KT-6535 "Go to Symbol" did not include Enum constants
  • KT-10700 Run tests via Gradle does not work for Kotlin sources
  • KT-12385 Closing quote was not automatically inserted when typing Char literal
  • KT-12445 Fix IllegalStateException in the class chooser if Kotlin script file exists
  • KT-13279 Deleting < in function call expression should delete matching >
  • KT-13795 Escaped chars in char literals was not highlighted
  • KT-14411 Code folding did not work in lambdas after some declatation
  • KT-14585 ConvertJavaCopyPasteProcessor showed a dialog under write action
  • KT-14741 Default JVM target was inferred to 1.8 for module with dependency on JDK 1.7
  • KT-13354 Fix unstable resolve of value parameter types in IDE tests
  • KT-13400 KDoc: Fully-qualified names were resolved incorrectly
  • KT-13197 KDoc: Code completion should suggest relevant identifiers for reference-value tags
  • KT-10665 KDoc: Do not show full KDoc popup on ctrl-hovering over declarations
  • KT-13038 Quick doc: HTML entities in code blocks should be escaped
  • KT-13389 Quick Doc: Hyperlinks to properties and functions did nothing
  • KT-7739 Quick Doc: Type names in should be navigable
  • KT-7995 Quick Doc: ReplaceWith value should be shown for deprecated elements
  • KT-13197 Quick Doc: Markdown indented code blocks were not recognized
  • KT-11032 Quick Doc: @sample was ignored
  • KT-13699 Quick documentation should show supertype docs for overridden Java methods
  • KT-14804 Avoid loading ast for decompiled files
  • KT-5897 Pressing Enter after binary operations places the caret at the wrong indentation
  • KT-10828 Support empty Unit function formatting on one line
  • KT-15123 Do indent adjustment on the fly only for the first element in the line
  • KT-15128 Do not assign type parameters from original proto if type is substituted with Any

Inspections, Intentions and Quickfixes

  • KT-12095 Implement "Join Declaration and Assignment" intention
  • KT-12701 Add a quickfix for @JvmOverloads on functions without default parameters, fix corresponding inspection range
  • KT-14326 Implement Intention + Inspection to remove empty secondary constructor body
  • KT-14521 Add Inspection to remove empty primary constructor
  • KT-14569 Convert Property to Function Intention: Search occurrences using progress dialog
  • KT-14501 Create from Usage: Support array access expressions/binary expressions with type mismatch errors
  • KT-14500 Create from Usage: Suggest functional type based on the call with lambda argument and unresolved invoke()
  • KT-13259 "Redundant if statement" inspection: report also assignments (as done for Java)
  • KT-13393 Implement intention to convert function reference to lambda
  • KT-12100 Add "Convert try-finally to use" intention
  • KT-14459 Initialize with Constructor Parameter: Fix IDE freeze on properties in generic class
  • KT-14044 Fix exception on deleting unused declaration in IDEA 2016.3
  • KT-14019 Create from Usage: Support generation of abstract members for superclasses
  • KT-14246 Intentions: Convert function type parameter to receiver
  • KT-14246 Intentions: Convert function type receiver to parameter
  • KT-14729 Implement "Add names to call arguments" intention
  • KT-11760 Create from Usage: Support adding type parameters to the referenced type
Issues fixed
  • KT-14396 "Remove redundant .let call" was not proposed for binary operations
  • KT-14552 ChangeParameterTypeFix held a strong reference to PSI
  • KT-14745 Fix KotlinNullPointerException in ConvertPrimaryConstructorToSecondary
  • KT-14791 Fix incorrect "remove redundant .let" inspection for value with smart cast
  • KT-14733 Fix incorrect intention to add out/in variance with inner classes
  • KT-13777 Simplify condition intention should work in case booleanCond == true
  • KT-14890 Inspection to remove curly braces from class definition should not trigger for nested classes followed by a secondary constructor
  • KT-12633 Intention "Specify type explicitly" should offer all bounds for platform types
  • KT-14100 Auto-import should suggest Enum constants
  • KT-15087 Don't suggest something == true simplification for flexible types
  • KT-14982 "Convert reference to lambda" worked incorrectly with static methods
  • KT-14985 "Convert reference to lambda" worked incorrectly with apply
  • KT-15028 Fix ClassCastException: KtParameter cannot be cast to KtFunction
  • KT-14063 N...
Read more

1.1-M04

21 Dec 17:38
Compare
Choose a tag to compare
1.1-M04 Pre-release
Pre-release

1.1-M04 (EAP-4)

Language related changes

  • KT-4481 compareTo on primitive floats/doubles should behave naturally
  • KT-11016 Allow to annotate internal API to be used inside public inline functions
  • KT-11128 Member vs SAM conversion with more specific signature
  • KT-12215 Allowing to access protected members in public inline members creates potential binary compatibility problem
  • KT-12531 Report error when delegated member hides a supertype member
  • KT-14650 mod function on integral types is inconsistent with BigInteger.mod
  • KT-14651 Floating point comparisons shall operate according to IEEE754
  • KT-14852 It should not be possible to use typealias that abbreviates a generic projection as a constructor
  • KT-15226 Restrict delegation to java 8 default methods

Reflection

  • KT-12250 Provide API for getting a single annotation by its class
  • KT-14939 VerifyError in accessors for bound property reference with receiver 'null'

Compiler

Coroutines

  • Major coroutines redesign - see KEEP for details

Optimizations

  • KT-11734 Optimize const vals by inlining them at call site
  • KT-13570 Generate TABLE/LOOKUPSWITCH if all when branches are const integer values
  • KT-14746 Captured Refs should not be volatile

Various issues

  • KT-10982 java.util.Map::compute* poor usability
  • KT-12144 Type inference incorporation error on SAM adapter call
  • KT-14196 Do not allow class literal with expression in annotation arguments
  • KT-14453 Regression: Type inference failed: inferred type is T but T was expected
  • KT-14774 Incorrect inner class modifier generated for sealed inner classes
  • KT-14839 CompilationException when calling inline fun with first arg of 2 (w/defaults) within catch block of Java exception type
  • KT-14855 Projection in type aliases should be allowed in supertypes and constructor invocations if they expand to non-toplevel projections
  • KT-14887 Unhelpful error "public-API inline function cannot access non-public-API" for unresolved call inside inline function
  • KT-14930 Android: creating Kotlin activity: UOE at EmptyList.removeAll()
  • KT-15146 Kapt3 no source files on unittest
  • KT-15272 Exception when building 2 projects at the same time

JavaScript backend

dynamic type

  • KT-8207 Extension function on dynamic resolves on any type
  • KT-6579 JS: prohibit to use in and !in on dynamic
  • KT-6580 JS: prohibit to use more than one argument in indexed access on dynamic
  • KT-13615 JS: don't generate guard for catch with dynamic type

@native/external

  • KT-13893 JS: Replace @Native annotation with external modifier
  • KT-12877 Allow to specify module for native JS declarations
  • KT-14806 JS: name of a local variable clashes with native declaration from global scope

Diagnostics

  • KT-13889 JS: prohibit overriding native functions with default values assigned to parameters
  • KT-13894 JS: prohibit native declaration inside non-native
  • KT-13895 JS: RUNTIME annotations
  • KT-13896 JS: prohibit external(native) extension functions and properties
  • KT-13897 JS: prohibit native(external) files and typealiases
  • KT-13910 JS: prohibit override members of native declaration with overloads
  • KT-14027 JS: prohibit native inner classes
  • KT-14029 JS: prohibit private members inside native declarations
  • KT-14037 JS: prohibit using native interfaces in RHS of IS
  • KT-14038 JS: warn when using native interface in RHS of AS
  • KT-15130 JS: prohibit inheritance native from non-native
  • KT-12600 JS: type check with a native interface compiles but crash at runtime
  • KT-13307 KotlinJS cannot cast to a marker interface.

Language features support

  • KT-13573 JS: support bound callable reference
  • KT-14634 JS: support enumValues / enumValueOf
  • KT-15058 JS: replace suspend function convention

Issues related to kotlin.Any

  • KT-7664 JS: "x is Any" is always false
  • KT-7665 JS: creating Any instance crashes on runtime
  • KT-15131 JS: don't mangle Any.equals

Various issues

  • KT-14033 JS: don't optimize (based on type information) by default expressions with any of "as, is, !is, as?, ?., !!"
  • KT-13616 JS: don't omit guard for catch with Throwable type
  • KT-12976 JS: human-friendly error message on wrong modules order
  • KT-15212 JS: link unqualified names in js(...) function to local functions in outer Kotlin function by name
  • KT-14750 JS: remove unnecessary functions from kotlin.js

Bugfixes

  • KT-12566 JS: inner local class should refer to captured variables via its outer class
  • KT-12527 Reified is-check works wrongly for chained calls
  • KT-12586 JS: compiler crashes when call inline function inside string templeate
  • KT-13164 Ecma TypeError on extending local class from inner one
  • KT-14888 JS: Compiler error: Cannot get FQ name of local class: lazy class
  • KT-14748 JS: eliminate unused functions
  • KT-14999 JS: Operator set + labeled lambdas
  • KT-15007 JS: Dies when checking if exception implements interface. TypeError: Cannot read property 'baseClasses' of undefined
  • KT-15073 KT to JS losing extension function's receiver
  • KT-15169 JS: compiler fails on annotated expression with TRE at Translation.doTranslateExpression()
  • KT-13522 JS: can't use captured reified type paramter in jsClass
  • KT-13784 JS: lambda was not inlined for function with reified parameter declared in another module
  • KT-13792 JS: inner class of local class does not capture enclosing class properly
  • KT-15327 JS: Enum valueOf should throw IllegalArgumentException

Standard library

  • KT-7930 Make String.toInt(), toLong(), etc. nullable instead of throwing exception
  • KT-8220 Add #peek method to Sequence similar to Stream.peek
  • KT-8286 Int.toString and String.toInt with base as parameter
  • KT-14034 JS: unsafeCast function
  • KT-15181 Some source files are missing from published sources on Bintray

IDE

  • KT-14693 Introduce Type Alias: Do not suggest type qualifiers
  • KT-14696 Introduce Type Alias: Fix NPE during dialog repaint
  • [`KT-14685...
Read more

1.1-M03

25 Nov 10:26
Compare
Choose a tag to compare
1.1-M03 Pre-release
Pre-release

1.1-M03 (EAP-3)

New language features

  • KT-2964 Underscores in integer literals
    (see KEEP)
  • KT-3824 Underscore in lambda for unused parameters
    (see KEEP)
  • KT-2783 Allow to skip some components in a multi-declaration
    (see the same KEEP)
  • KT-11551 limited scope for dsl writers
    (see KEEP)

Compiler

Coroutines related issues

  • Make fields for storing lambda parameters non-final (as they get assigned within invoke call)
  • KT-14719 Make initial continuation able to be resumed with exception
  • KT-14636 Coroutine fields should not be volatile
  • KT-14718 Validate label value of coroutine in case of no suspension points

Typealises related issues

  • KT-13514 Type inference doesn't work with generic typealiases
  • KT-13837 Error "Type alias expands to T, which is not a class, an interface, or an object"
    should also appear for local type aliases
  • KT-14307 Local recursive type alias should be an error
  • KT-14400 Compiler Error IllegalStateException: kotlin.NotImplementedError when anonymous
    object inherits from typealias
  • KT-14377 Expected error: Modifier 'companion' is not applicable to 'typealias'
  • KT-14498 typealias allows to circumvent variance annotations
  • KT-14641 An exception while processing a nested type alias access after a dot

Various issues

  • KT-550 Properties without initializer but with get must infer type from getter
  • KT-8816 Generate Kotlin parameter names in the same form as expected for Java 8 reflection
  • KT-10569 Cannot iterate over values of an enum class when it is used as a generic parameter
    (see KEEP)
  • KT-13557 VerifyError with delegated local variable used in object expression
  • KT-13890 IllegalAccessError when invoking protected method with default arguments
  • KT-14012 Back-end (JVM) Internal error every first compilation after the source code change
  • KT-14201 UnsupportedOperationException: Don't know how to generate outer expression for anonymous
    object with invoke and non-trivial closure
  • KT-14318 Repeated annotations resulting from type alias expansion should be reported
  • KT-14347 Report UNUSED_PARAMETER/VARIABLE on named unused lambda parameters/destructuring entries
  • KT-14352 @SinceKotlin is not taken into account for companion object member referenced via
    type alias
  • KT-14357 Try-catch used in false condition generates CompilationException
  • KT-14502 Prohibit irrelevant modifiers and annotations on destructured parameters in lambda
  • KT-14692 Change resolution scope for componentX in lambda parameters
  • KT-14824 Back-end (JVM) Internal error: Couldn't inline method call 'get' into local final fun
    StorageComponentContainer.(): kotlin.Unit
  • KT-14798 Gradle 3.2 AssertionError: Built-in class kotlin.ParameterName is not found

JS

Feature support

  • KT-6985 Support Exceptions in JS
  • KT-13574 JS: support coroutines
  • KT-14422 JS: Support destructuring in lambda parameters
  • KT-14507 JS: allow to skip some components in a multi-declaration

Library updates

  • KT-14637 JS: Missing ArrayList.ensureCapacity

Other issues

  • KT-2328 js: kotlin exceptions must inherit Error
  • KT-5537 Drop Cloneable in JS
  • KT-7014 JS: generate code which more friendly to js tools (minifier, optimizer, linter etc)
  • KT-8019 JS: no stackTrace in exception subclasses
  • KT-10911 JS: Throwable properties aren't supported well
  • KT-13912 JS: Compiler NPE at JsSourceGenerationVisitor. Lambda with empty [if] block passed
    to inline function
  • KT-14535 JS: Broken modification of captured variables defined by a destructuring declaration

Standard Library

  • KT-2084 Common API should be available without referring to java.* packages

    Now those common types, which are supported on all platforms, are available in kotlin.* packages, and are imported by default. These include:

    • ArrayList, HashSet, LinkedHashSet, HashMap, LinkedHashMap in kotlin.collections
    • Appendable and StringBuilder in kotlin.text
    • Comparator in kotlin.comparisons
      On JVM these are just typealiases of the good old types from java.util and java.lang
  • KT-13554 Introduce bitwise operations and/or/xor/inv for Byte and Short

  • KT-13582 New platform-agnostic extensions for arrays: contentEquals to compare arrays'
    content for equality, contentHashCode to get hashcode of array's content, and contentToString to get the string representation of array elements.

  • KT-14510 Generic constraints of Array.flatten signature were relaxed a bit to make it just usable.

  • KT-14789 Provide KotlinVersion class, which allows to get the current version of the standard
    library and compare it with some other KotlinVersion value.

IDE

  • KT-14409 Incorrect "Variable can be declared immutable" inspection for local delegated variable
  • KT-14431 Create quick-fix on UNUSED_PARAMETER/VARIABLE when it can be replaced with one underscore
  • KT-14794 Add /Specify type/Remove explicit type intentions for property with getters if type
    can be inferred
  • KT-14752 Exception while typing @JsName annotation in editor

Previous releases

This release also includes the fixes and improvements from releases 1.0.5-2, 1.1-M01 and 1.1-M02

1.0.5-2

15 Nov 15:21
Compare
Choose a tag to compare
  • Fixed compatibility with Android Studio 2.3 Canary
  • KT-14751 Fixed inability to resolve references to Java classes with type annotations on inner class or enum constructor parameters
  • KT-14752 Fixed error when analyzing incomplete @JsName annotation
  • KT-14724 Kotlin code compiled to JavaScript with Gradle calls main function by default

1.0.5

08 Nov 16:21
Compare
Choose a tag to compare

Compiler

  • KT-10210 Annotation written before a block-level expression now applies to the entire expression, not to its first prefix
  • KT-13565 Remove net/sf/cglib/core/* classes from compiler jars
  • KT-2787 Set reference target and report custom error instead unresolved reference for cases:
    interface, generic parameter, object + invoke, class without companion.
  • KT-13408 Fix decompilation of types based on local classifiers
  • KT-13730 Fix signature clash problems when extending Hashtable and similar classes
  • Support for property reference inlining
  • KT-11123 Fix implicit type arguments resolution for inner classes
  • KT-11263 Refine diagnostic about type arguments for an outer class
  • KT-12238, KT-10627 Fix inference when captured type is used as a lambda parameter type
  • KT-13950 Fix false positive "Cannot capture" error reporting
  • KT-13381, KT-13396 Prevent generation of delegations to interfaces private methods
  • KT-13295 Add warning for redundant lateinit modifier
  • KT-13952, KT-13005 Prohibit return type mismatch for delegation members
  • KT-8154 Fix AssertionError when delegating base interface and implementing derived interface
  • KT-13969 Fix VerifyError for do-while, continue and a condition in a local variable
  • KT-14025 Fix CCE in OverloadResolver.findRedeclarations
  • KT-14147 Report error on declaring 'getClass' in class or package
  • KT-14146 Fix detection of accidental overrides with synthetic bridge
  • KT-14188 Do not generate mutable collection stubs for Kotlin-only signatures
  • KT-14195 Write generic signature for autogenerated toArray
  • KT-13698 Optimize method count for collection stubs
  • KT-14243 Fix wrong invocation descriptor on calling implicitly generated implementation in class
  • KT-11585 Fix "Cannot pop operand off an empty stack" exception when accessing @JvmStatic property
  • KT-14242 Fix runtime exception on array?.size
  • Forbid use of expressions to the left of ::class
  • KT-13926 Report error on usages of classes deprecated with DeprecationLevel.HIDDEN
  • KT-14298 Add -api-version command line option
  • KT-5044 Generate more efficient bytecode for in on ranges with double, float and long element type
  • KT-14357 Fixed CompilationException in case of try-catch used in false condition
  • KT-14012 Fixed internal error on every first compilation after the source code change
  • KT-14304 Fixed inconsistent reporting of 'variable must be initialized' after assignment
    in anonymous object
  • KT-14158 Fixed possible exception thrown when reporting unreachable code diagnostics
  • KT-7929, KT-8442 Fixed various exceptions caused by trying to use destructuring declarations outside of a code block
  • KT-14447 Fixed compiler exception if a value was changed but not used
  • KT-14201 Fixed compiler exception for anonymous object with invoke and non-trivial closure
  • KT-13890 Fixed incorrect bytecode generation causing IllegalAccessError at runtime for invoking protected method with default arguments
  • KT-9297 Report "External declaration cannot be abstract" on property with external accessor

Reflection

  • Various runtime performance optimizations
  • KT-13700 Fix reflective access on overridden generic property reference

IDE

  • KT-12852 Support breadcrumbs for Kotlin
  • KT-13474 Fix performance of typing super call lambda
  • Re-highlight only single function after local modifications
  • Show "Variables and values captured in a closure" highlighting only for usages
  • KT-9125 Support Type Hierarchy on references inside of super type call entries
  • KT-13838 Add file name to the presentation of private top-level declaration (Go to symbol, etc.)
  • KT-12697 Expand selection selects ": Type"
  • KT-13693 Expand selection stops on brackets in indexing expression
  • KT-4519 Show first line for folded block comments
  • KT-5193 Multiline strings are now foldable
  • KT-13473 Structure view now shows local functions
  • KT-11775 Added icons for class initializers
  • KT-11776 Primary constructor members are shown in Project view when "Show members" is enabled
  • KT-13326 Speed search is now enabled in add import popup
  • KT-3363 Support "Surround with if" for expressions
  • KT-13927 exception Fixed on adding second inner class when there is a usage in Java of the first one
  • KT-9009 Support for auto-import of Java static methods
  • Improved performance for Find Usages of convention functions
  • KT-13643 Support for Find Usages of invoke operator method
  • KT-13605 Find Usages no longer fails to find usages of component function defined in Java
  • KT-13953 Import member popup no longer suggests methods when only property or variable is valid
  • KT-9019, KT-10178 Improved display of structure when "Group by file structure" is enabled
  • KT-13475 Show context when invoking Show Implementations from Find Usages popup
  • KT-13140 "Copy Reference" now copies JVM name of class or method to clipboard
  • KT-10095 Support "Show expression type" in variable declaration position
  • KT-10588 Show smart cast information in "Show expression type"
  • KT-11310, KT-8803 Use short names in Show Expression Type
  • KT-11640 Optimize imports prevents accidental changes in resolve because of import priorities
  • KT-13976 Search Everywhere: Render function parameter types
  • KT-13977 Search Everywhere: Render extension type in prefix position
  • KT-12966 Fixed possible deadlock in IDE
  • KT-13136 Reduced plugin memory usage on projects with large number of modules
  • KT-13861 Correct Parameter Info for SAM adapters
  • KT-13981, KT-5117 Add indent before colon of super types list on new line
  • KT-7718 Fixed indent in constructor delegate call
  • KT-13584 Fixed IDE misbehavior (exceptions, index corruption) after Java to Kotlin conversion
  • KT-12402 Fixed resolve of databinding
    classes inside the IDE
  • KT-14131 Formatter now removes spaces in labeled expressions
  • KT-14327 Allow to select single word on double click in one line doc comment
  • [KT-14452](https://youtrack.jetbrains.com/issue/KT-14452...
Read more

Kotlin 1.1 M02 (Early Access Preview)

19 Oct 15:31
Compare
Choose a tag to compare
Pre-release

Language features

  • Destructuring for lambdas (proposal)

    Current limitations:

    • Nested destructuring is not supported
    • Destructuring in named functions/constructors is not supported
    • Is not supported for JS target

Compiler

Smart cast enhancements

  • KT-2127 Smart cast receiver to not null after a not null safe call
  • KT-6840 Make data flow information the same for assigned and assignee
  • KT-13426 Fix exception when smartcast on both dispatch & extension receiver

Bound references related issues

  • KT-12995 Do not skip generation of the left-hand side for intrinsic bound references and class literals
  • KT-13075 Fix codegen for bound class reference
  • KT-13110 Fix type mismatch error on class literal with integer receiver expression
  • KT-13172 Report error on "this::class" in super constructor call
  • KT-13271 Fix incorrect unsupported error on synthetic extension call on LHS of ::
  • KT-13367 Inline bound callable reference if it's used only as a lambda

Coroutines related issues

  • KT-13156 Do not execute last Unit-typed coroutine statement twice
  • KT-13246 Fix VerifyError with coroutines on Dalvik
  • KT-13289 Fix VerifyError with coroutines: Bad type on operand stack
  • KT-13409 Fix generic variable spilling with coroutines
  • KT-13531 Fix ClassCastException when coercion to Unit interacts with generic await() and coroutines
  • Prohibit Continuation<*> as a last parameter of suspend functions
  • KT-13560 Prohibit non-Unit suspend functions

Typealises related issues

  • KT-13200 Fix incorrect number of required type arguments reported on typealias
  • KT-13181 Fix unresolved reference for a type alias from a different module
  • KT-13161 Support java static methods calls with typealiases
  • KT-13835 Do not lose nullability information while expanding type alias in projection position
  • KT-13422 Prohibit usage of type alias to exception class as an object in 'throw' expression
  • KT-13735 Fix NoSuchMethodError for generic typealias access
  • KT-13513 Support SAM constructors for aliased java functional types
  • KT-13822 Fix exception for start-projection of a type alias
  • KT-14071 Prohibit using type alias as a qualifier for super
  • KT-14282 Report error on unused type alias with -language-version 1.0
  • KT-14274 Fix type alias resolution when it's used for supertype constructor call

JDK dependent built-in classes related issues

  • KT-13209 Change first parameter's type of Map.getOrDefault to K instead of Any
  • KT-13069 Do not emit invalid DefaultImpls delegation when interface extends MutableMap with JDK8

data classes and inheritance

  • KT-11306 Allow data classes to implement equals/hashCode/toString from base classes

Various JVM code generation issues

  • KT-13182 Fix compiler internal error at inline
  • KT-13757 Prohibit referencing nested classes by name with $
  • KT-12985 Do not create range instances for 'for' loop in CharSequence.indices
  • KT-13931 Optimize generated code for IntRange#contains

Various analysis & diagnostic issues

  • KT-435 Use parameter names in error messages when calling a function-valued expression
  • KT-10001 Fix false unnecessary non-null assertion on a pair element
  • KT-12811 Treat function declaration as final if it is a member of a final class
  • KT-13961 Report REDECLARATION on private-in-file 'foo' vs public 'foo' in different file

JS

Feature support

Library updates

  • KT-18 Move exceptions from java.lang to kotlin package
  • KT-12386 Rewrite JS collections in Kotlin, move them to kotlin.collections package
  • KT-7809 Make Collection implementations conform to their declared interfaces
  • KT-7473 Make AbstractCollection.equals check object type
  • KT-13429 Make 'remove' on fresh iterator throw exception instead of removing last element
  • KT-13459 Make JS implementation of ArrayList::add(index, element) check the index is in valid range
  • KT-8724 Fix MutableIterator.remove() for HashMap
  • KT-10786 Make Map.keys return view of map keys instead of snapshot
  • KT-14194 Make HashMap.putAll implementation not to call getKey/getValue

Standard Library

Backward compatibility

  • KT-14297 Add @SinceKotlin annotation to support compatibility with compilation against older standard library
  • KT-14213 Ensure printStackTrace can be called with -language-version 1.0

Enhancements

  • KEEP-53 Provide two distinct hierarchies of abstract collections: one for implementing read-only/immutable collections, and other for implementing mutable collections
  • KEEP-13 Provide extension functions to copy maps
  • KT-18 Introduce type aliases for common exceptions from java.lang in kotlin package
  • KT-12762 Make kotlin.ranges.until return an empty range for "illegal" 'to' parameter
  • KT-12894 Allow nullable receiver for use extension

Reflection

New features

  • KT-8998 Introduce comprehensive API to work with KType instances
  • KT-10447 Provide a way to check if a KClass is a data class
  • KT-11284 Add KClass.cast extension
  • KT-13106 Support annotation constructors in reflection

Optimizations

IDE

New features
  • KT-12903 Implement "Inline type alias" refactoring
  • KT-12902 Implement "Introduce type alias" refactoring
  • KT-12904 Implement "Create type alias from usage" quick fix
  • KT-9016 Make use of named higher order function parameters
  • KT-12205 Suggest import of Kotlin static members in editor with Java source
  • KT-13941 Implement intention for introducing destructured lambda parameters when it's possible
  • KT-13943 Implement inspection and quickfix for to detect a manual destructuring of for / lambda parameter
Issues fixed
  • KT-13004 Support bound method references in completion
  • KT-13242 Suggest 'typealias' keyword in completion
  • KT-13244 Override/Implement Members: Do not expand type aliases in the generated members
  • KT-13611 Go to Class: Fix presentation of type aliases
  • KT-13759 Rename: Process object-wrapping alias references
  • KT-13955 Find Usages: Add special type for usages inside of type aliases
  • [`KT-13...
Read more

1.0.4

22 Sep 15:44
Compare
Choose a tag to compare

Compiler

Analysis & diagnostics

  • KT-10968, KT-11075, KT-12286 Type inference of callable references
  • KT-11892 Report error on qualified super call to a supertype extended by a different supertype
  • KT-12875 Report error on incorrect call of member extension invoke
  • KT-12847 Report error on accessing protected property setter from super class' companion
  • KT-12322 Overload resolution ambiguity with constructor reference when class has a companion object
  • KT-11440 Overload resolution ambiguity on specialized Map.put implementation from Java
  • KT-11389 Runtime exception when calling Java primitive overloadings
  • KT-8200 Exception when using non-generic interface with generic arguments
  • KT-10237 Exception on an unresolved symbol in a type parameter bound in the 'where' clause
  • KT-11821 Exception on incorrect number of generic arguments in a type parameter bound in the 'where' clause
  • KT-12482 Exception: Implementation doesn't have the most specific type, but none of the other overridden methods does either
  • KT-12687 Exception when 'data' modifier is applied to object
  • KT-9620 AssertionError in DescriptorResolver#checkBounds
  • KT-3689 IllegalAccess on a property with private setter of the subclass
  • KT-6391 Wrong warning for array casting (Array<Any?> to Array)
  • KT-8596 Exception when analyzing nested class constructor reference in an argument position
  • KT-12982 Incorrect type inference when accessing mutable protected property via reflection
  • KT-13206 Report "Cast never succeeds" if and only if ClassCastException can be predicted
  • KT-12467 IllegalStateException: Concrete fake override should have exactly one concrete super-declaration: []
  • KT-13340 Report "return is not allowed here" only on the return keyword, not the whole expression
  • KT-2349, KT-6054 Report "uninitialized enum entry" if enum entry is referenced before its declaration
  • KT-12809 Report "uninitialized variable" if property is referenced before its declaration
  • KT-260 Do not report "cast never succeeds" when casting nullable to nullable
  • KT-11769 Prohibit access from enum instance initialization code to members of enum's companion object
  • KT-13371 Fix CompilationException: Rewrite at slice LEAKING_THIS key: REFERENCE_EXPRESSION
  • KT-13401 Fix StackOverflowError when checking variance
  • KT-13330, KT-13349 Fix AssertionError: Illegal resolved call to variable with invoke
  • KT-13421 Fix AssertionError: Only integer constants should be checked for overflow
  • KT-13555 Fix internal error "resolveToInstruction"
  • KT-8989 Change error messages: Replace "invisible_fake" with "invisible (private in a supertype)"
  • KT-13612 Val reassignment in try / catch
  • KT-5469 Incorrect "is never used" warning for value used in catch block
  • KT-13510 Missing "Nested class not allowed" error for anonymous object inside val initializer
  • KT-13685 Fix NPE when resolving callable references on incomplete code
  • Change error messages: Fix quotes around keywords in diagnostic messages
  • Change error messages: Remove quotes around visibilities

Parser

  • KT-7118 Improve error message after trailing dot in floating point literal
  • KT-4948 Recover by following keyword
  • KT-7915 Recover after val with no subsequent name
  • KT-12987 Recover after val with no name before declaration starting with soft keyword

JVM code generation

  • KT-12909 Do not generate redundant bridge for special built-in override
  • KT-11915 Exception in entrySet when Map implementation in Kotlin extends another one
  • KT-12755 Exception on property generation in multi-file classes
  • KT-12983 VerifyError: Bad type on operand stack in arraylength
  • KT-12908 Variable initialization in loop causes VerifyError: Bad local variable type
  • KT-13040 Invalid bytecode generated for extension lambda invocation with safe call
  • KT-13023 Char operations throw ClassCastException for boxed Chars
  • KT-11634 Exception for super call in delegation
  • KT-12359 Redundant stubs are generated on inheriting from java.util.Collection
  • KT-11833 Error generating constructors of class on anonymous object inheriting from nested class of super class
  • KT-13133 Incorrect InnerClasses attribute value for anonymous object copied from an inline function
  • KT-13241 Indices optimization leads to VerifyError with smart cast receiver
  • KT-13374 Fix compiler exception when inline function contains anonymous object implementing an interface by delegation
Generated code performance
  • KT-11964 No TABLESWITCH in when on enum bytecode if enum constant is imported
  • KT-6916 Optimize 'for' over 'downTo'
  • KT-12733 Optimize 'for' over 'rangeTo' as a non-qualified call

Standard Library

  • KT-13115, KT-13297 Improve documentation formatting, clarify documentation for FileTreeWalk, Sequence and generateSequence.
  • KT-12894 Do not fail in Closeable.use if the resource is null.

Reflection

  • KT-12915 Runtime exception on callBy of JvmStatic function with default arguments
  • KT-12967 Runtime exception on reference to generic property
  • KT-13370 NullPointerException on companionObjectInstance of a built-in class
  • KT-13462 Make KClass for primitive type equal to the corresponding KClass for wrapper type

IDE

  • KT-12655 New Kotlin file: extra error message for already existing file
  • KT-12760 Prohibit running non-Unit returning main function
  • KT-12893 Impossible to open Kotlin compiler settings
  • KT-10433 Copy-pasting reference to companion object member causes import dialog
  • KT-12803 Class is marked as unused when it is only used is in method reference
  • KT-13084 Run test method action executes all tests from same kotlin file
  • KT-12718 Deadlock due to index reentering
  • KT-13114 'Unused declaration' option 'JUnit static methods' is always enabled
  • KT-12997 Override/Implement Members: Support "Copy JavaDoc" options for library classes
  • KT-12887 "Extend selection" should select call's invoked expression
  • KT-13383, KT-13379 Override/Implement Members: Do not make return type non-nullable if base return type is explicitly nullable
  • [KT-13218](https:/...
Read more

Kotlin 1.1 M01 (Early Access Preview)

14 Jul 13:18
Compare
Choose a tag to compare
Pre-release

Language features

  • Coroutines (async/await, generators) (proposal)

    Current limitations:

    • for some cases type inference is not supported yet
    • limited IDE support
    • allowed only one handleResult function: design
    • handling finally blocks is not supported: issue
  • Bound callable references (proposal)

  • Type aliases (proposal)

    Current limitations:

    • type alias constructors for inner classes are not supported yet
    • annotations on type alias are not supported yet
    • limited IDE support
  • Local delegated properties (proposal)

  • JDK dependent built-in classes (proposal)

  • Sealed class inheritors in the same file (proposal)

  • Allow base classes for data classes (proposal)

Scripting

  • Implement support for Script Definition Template
    and related functionality, except the following parts:
    • automatic script templates discovery is not implemented
    • @file:ScriptTemplate annotation is not supported
    • the parameters javaHome and scripts from KotlinScriptExternalDependencies are not used yet
  • Implement support for custom template-based scripts in IDEA: resolving, completion and navigation to symbols from script classpath and sources
  • Implement GradleScriptTemplateProvider extension that supplies a script template if gradle with
    kotlin script support is used in the project

Compiler

Issues fixed
  • KT-4779 Generate default methods for implementations in interfaces
  • KT-11780 Fixed incorrect "No cast needed" warning
  • KT-12156 Fixed incorrect error on inline modifier inside final class
  • KT-12358 Report missing error "Abstract member not implemented" when a fake method of 'Any' is inherited from an interface
  • KT-6206 Generate equals/hashCode/toString in data class always unless it'll cause a JVM signature clash error
  • KT-8990 Fixed incorrect error "virtual member hidden" for a private method of an inner class
  • KT-12429 Fixed visibility checks for annotation usage on top-level declarations
  • KT-5068 Introduced a special diagnostic message for "type mismatch" errors such as fun f(): Int = { 1 }.

Standard Library

  • KT-8254 Provide standard library supplement artifacts for using with JDK 7 and 8.
    These artifacts include extensions for the types available in the latter JDKs, such as AutoCloseable.use (KT-5899) or Stream.toList.
  • KT-12753 Provide an access to named group matches of Regex match result (for JDK 8 only).
  • Add assertFails overload with message to kotlin-test.

IDE

New features
  • "Leaking this" inspection

    This inspection reports dangerous operations inside constructors including:

    • Accessing non-final property in constructor
    • Calling non-final function in constructor
    • Using 'this' as function argument in constructor of non-final class
Issues fixed
  • KT-12389 Do not exit from REPL when toString() of user class throws an exception
  • KT-12129 Fixed link on api reference page in KDoc

1.0.3

30 Jun 12:55
Compare
Choose a tag to compare

Compiler

Analysis & diagnostics

  • Combination of open and override is no longer a warning
  • KT-4829 Equal conditions in when is now a warning
  • KT-6611 "This cast can never succeed" warning is no longer reported for Foo<T> as Foo<Any>
  • KT-7174 Declaring members with the same signature as non-overridable methods from Java classes (like Object.wait/notify) is now an error (when targeting JVM)
  • KT-12302 abstract modifier for a member of interface is no longer a warning
  • KT-12452 open modifier for a member of interface without implementation is now a warning
  • KT-11111 Overriding by inline function is now a warning, overriding by a function with reified type parameter is an error
  • KT-12337 Reference to a property with invisible setter now has KProperty type (as opposed to KMutableProperty)
Issues fixed
  • KT-4285 No warning for a non-tail call when the method inherits default arguments from superclass
  • KT-4764 Spurious "Variable must be initialized" in try/catch/finally
  • KT-6665 Unresolved reference leads to marking subsequent code unreachable
  • KT-9597 NullPointerException during resolution of complicated star projections
  • KT-11750 Exceptions when creating various entries with the name "name" in enums
  • KT-11998 Smart cast to not-null is not performed on a boolean property in if condition
  • KT-10648 Exhaustiveness check does not work when sealed class hierarchy contains intermediate sealed classes
  • KT-10717 Type inference for lambda with local return
  • KT-11266 Fixed "Empty intersection of types" internal compiler error for some cases
  • KT-11857 Fix visibility check for dynamic members within protected method (when targeting JS)
  • KT-12589 Improved "infix modifier is inapplicable" diagnostic message
  • KT-11679 Erroneous call with argument causes Throwable at ResolvedCallImpl.getArgumentMapping()
  • KT-12623 Fix ISE on malformed code

JVM code generation

  • KT-5075 Optimize array/collection indices usage in for loop
  • KT-11116 Optimize coercion to Unit, POP operations are backward-propagated
Issues fixed
  • KT-11499 Compiler crashes with "Incompatible stack heights"
  • KT-11943 CompilationException with extension property of KClass
  • KT-12125 Wrong increment/decrement on Byte/Char/Short.MAX_VALUE/MIN_VALUE
  • KT-12192 Exhaustiveness check isn't generated for when expression returning Unit
  • KT-12200 Erroneously optimized away assignment to a property initialized to zero
  • KT-12582 "VerifyError: Bad local variable type" caused by explicit loop variable type
  • KT-12708 Bridge method not generated when data class implements interface with copy() method
  • KT-12106 import static of reified companion object method throws IllegalAccessError

Performance

  • Reduced number of IO operation when loading kotlin compiled classes

Сompiler options

  • Allow to specify version of Kotlin language for source compatibility with older releases.
    • CLI: -language-version command line option
    • Maven: languageVersion configuration parameter, linked with kotlin.compiler.languageVersion property
    • Gradle: kotlinOptions.languageVersion property in task configuration
  • Allow to specify which java runtime target version to generate bytecode for.
    • CLI: -jvm-target command line option
    • Maven: jvmTarget configuration parameter, linked with kotlin.compiler.jvmTarget property
    • Gradle: kotlinOptions.jvmTarget property in task configuration
  • Allow to specify path to JDK to resolve classes from.
    • CLI: -jdk-home command line option
    • Maven: jdkHome configuration parameter, linked with kotlin.compiler.jdkHome property
    • Gradle: kotlinOptions.jdkHome property in task configuration

Standard Library

  • Improve documentation (including KT-11632)
  • List iteration used in collection operations is performed with an indexed loop when the list supports RandomAccess and the operation isn't inlined

IDE

Completion

New features
  • Smart completion after by and in
  • Improved completion in bodies of overridden members (when no type is specified)
  • Improved presentation of completion items for property accessors
  • Fixed keyword completion after try in assignment expression
  • KT-8527 Include non-imported declarations on the first completion
  • KT-12068 Special completion item for "[]" get-operator access
  • KT-12080 Parameter names are now higher up in completion list
Issues fixed
  • Fixed enum members being present in completion as static members
  • Fixed QuickDoc not working for properties generated for java classes
  • KT-9166 Code completion does not work for synthetic java properties on typing "g"
  • KT-11609 No named arguments completion should be after dot
  • KT-11633 Wrong indentation after completing a statement in data class
  • KT-11680 Code completion of label for existing return with value inserts redundant whitespace
  • KT-11784 Completion for if statement should add parentheses automatically
  • KT-11890 Completion for callable references does not propose static Java members
  • KT-11912 String interpolation is not converted to ${} form when accessing this.property
  • KT-11957 No catch and finally keywords in completion
  • KT-12103 Smart completion for nested SAM-adapter produces short unresolved name
  • KT-12138 Do not show "::error" in smart completion when any function type accepting one argument is expected
  • KT-12150 Smart completion suggests to compare non-nullable with null
  • KT-12124 No code completion for a java property in a specific position
  • KT-12299 Completion: incorrect priority of property foo over method getFoo in Kotlin-only code
  • KT-12328 Qualified function name inserted when typing before if
  • KT-12427 Completion doesn't work for "@receiver:" annotation target
  • KT-12447 Don't use CompletionProgressIndicator in Kotlin plugin
  • KT-12669 Completion should show variant with () when there is default lambda
  • KT-12369 Pressing dot after class name should not cause insertion of constructor call

Spring support

New features
Issues fixed
  • KT-12091 Fixed unstable behavior of Spring line markers
  • KT-12096 Fixed rename of custom-named beans specified with Kotlin annotation
  • KT-12117...
Read more