CHANGELOG

1.0.5

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 Fix handling of underscores in Markdown links
  • KT-14153 Use correct fully-qualified name when creating run configurations for nested classes
  • KT-13753 Fixed “Go to implementations” when a class/interface and its implementations are both declared in a local scope
  • KT-14508 Improved performance of certain Find Usages operations

IDE. Code Completion

  • KT-4710 Postfix code completion
  • KT-13298 Completion after override val or override fun suggests base class method/property names
  • KT-13047 Autocomplete no longer inserts a fully-qualified variable name inside a String
  • KT-12083 Insert {} if needed when completing in string literal
  • KT-13833 JavaScript: Smart type completion uses lower priority for elements of dynamic type
  • KT-13728 Implicitly imported functions are shown higher in completion lists than non-imported
  • KT-8664 Hide componentX() functions for data classes from completion
  • KT-12077, KT-13009 Code completion and auto-import no longer insert FQN for annotations with use-site target inside primary constructor
  • KT-13780 Fix failure of code completion in certain conditions
  • KT-9835 Fix detection of receiver nullability
  • KT-13810 Fix incorrect deletion of last inserted character

IDE. Refactorings

  • KT-13155 Implement “Introduce Type Parameter” refactoring
  • KT-11017 Implement “Extract Superclass” refactoring
  • KT-11017 Implement “Extract Interface” refactoring Pull Up: Support properties declared in the primary constructor Pull Up: Support members declared in the companion object of the original class Pull Up: Show member dependencies in the refactoring dialog
  • KT-9485 Push Down: Support moving members from Java to Kotlin class
  • KT-13963 Rename: Implement popup chooser for overriding members
Issues Fixed
  • KT-13542 Rename: Do not search parameter text occurrences outside of its containing declaration
  • KT-8672 Rename: Optimize search of parameter references in calls with named arguments
  • KT-9285 Rename: Optimize search of private class members
  • KT-8867 Rename: Rename all overridden members if user chooses to refactor base declaration(s)
  • Support inplace rename on type parameters
  • KT-13630 Do not show Change Signature dialog when applying “Remove parameter” quick-fix
  • KT-13535 Pull Up: Remove visibility modifiers on adding ‘override’
  • Pull Up: Drop ‘override’ modifier if moved member doesn't override anything
  • KT-13216 Move: Report separate conflicts for each property accessor
  • KT-13215 Move: Forbid moving of enum entries
  • KT-13553 Move: Do not show directory selection dialog if target directory is already specified by drag-and-drop
  • KT-13660 Move: Do not drop object receivers when calling variable of extension functional type
  • KT-13903 Move: Remove companion object which becomes empty after the move
  • KT-13916 Move: Report visibility conflicts in import directives
  • KT-13906 Move Nested Class to Upper Level: Do not show directory selection dialog twice
  • KT-13901 Move: Do not ignore target directory selected in the dialog (DnD mode)
  • KT-13904 Move Nested Class to Upper Level: Preserve state of “Search in comments”/“Search for text occurrences” checkboxes
  • KT-13909 Move Files/Directories: Fix behavior of “Open moved files in editor” checkbox
  • KT-14004 Introduce Variable: Fix exception on trying to extract variable of functional type
  • KT-13726 Move: Fix bogus conflicts due to references resolving to wrong library version
  • KT-14096 Rename: When renaming Kotlin file outside of source root do not rename its namesake in a source root
  • KT-13928 Move Inner Class to Upper Level: Fix replacement of outer class instances used in inner class constructor calls
  • KT-12556 Allow using whitespaces and other symbols in “Generate -> Test Function” dialog
  • KT-14122 Generate ‘toString()’: Permit for data classes
  • KT-12398 Call Hierarchy: Show Kotlin usages of Java methods
  • KT-14114 Move: Fix exception on moving Kotlin file without declarations
  • KT-14157 Rename: Rename do-while loop variables in the loop condition
  • KT-14128, KT-13862 Rename: Use qualified class name when looking for occurrences in non-code files
  • KT-6199 Rename: Replace non-code class occurrences with new qualified name
  • KT-14182 Move: Show error message on applying to enum entries
  • Extract Function: Support implicit abnormal exits via Nothing-typed expressions
  • KT-14234 Rename: Do not suggest type-based names for functions with primitive return types

IDE. Inspections, Intentions and Quickfixes

  • Intention to convert loops over collections to use of standard library higher-order functions (filter, map, all, none etc.)
  • KT-13519 Add intention+inspection to remove empty parentheses from method call with single lambda parameter
  • KT-13384 Inspection to warn on using == with array types
  • KT-12804 Add quickfix for “A type annotation is required on a value parameter”
  • KT-11525 Implement “Create type parameter” quickfix
  • KT-13521 Warning that right part of “expression ?: null” is useless
  • KT-13773, KT-13674 Quickfixes for FINAL_UPPER_BOUND diagnostic
  • KT-9590 Quickfix for accessing ::class of a non-reified type parameter
  • KT-13551 Inspection + intention to replace .let { it.foo() } with .foo()
  • KT-13744 Add “Copy concatenation text to clipboard” intention
  • KT-13635 Implement quick fix to convert a too long char literal to a string
  • KT-13945 Add intention to replace Math.max/min with coerceAtLeast/coerceAtMost
  • KT-9839 Add intention to convert primary constructor to a secondary one and back
  • KT-9931 Implement “Remove unused assignment” quickfix
  • KT-13937 Inspection/Intention to replace size check with ‘isNotEmpty’ and ‘isEmpty’
  • KT-14241 Inspection/Intention to remove empty class body
  • Inspection to detect implicit casts from dynamic to another Kotlin type
  • KT-14032 Quickfix to replace if with elvis + safe-cast
  • KT-7488 Intention action on a local variable of data class type: convert to multi-variable declaration
  • KT-14238 Quickfix for ambiguously annotated binary expression
  • KT-9950 Auto-import now offers to import extension method when an instance method has the same name but a mismatched signature
  • KT-14342 Add quickfixes for lateinit errors
  • KT-14199 Add Library: Fix exception due to resolution being run in the “dumb mode”
  • Convert Receiver to Parameter: Fix this replacement
  • KT-10871, KT-12625 Inspection to highlight redundant calls of conversion methods
  • KT-14084 “Replace if expression with elvis operator” is now able to convert chained calls to safe-calls
  • KT-12019 Added inspection to highlight redundant if statements
Issues fixed
  • KT-9490 Convert receiver to parameter: use template instead of the dialog
  • KT-11483 Move to Companion: Do not use qualified names as labels
  • KT-13874 Move to Companion: Fix AssertionError on running refactoring from Conflicts View
  • KT-13883 Move to Companion Object: Fix exception when applied to class
  • KT-13876 Move to Companion Object: Forbid for functions/properties referencing type parameters of the containing class
  • KT-13877 Move to Companion Object: Warn if companion object already contains function with the same signature
  • KT-13933 Convert Parameter to Receiver: Do not qualify companion members with labeled ‘this’
  • KT-13942 Redundant ‘toString()’ in String Template: Disable for qualified expressions with ‘super’ receiver
  • KT-13878 Remove Redundant Receiver Parameter: Fix exception receiver removal
  • KT-13588 Allow to convert empty Unit returning functions to expression form
  • KT-12297 Add function to supertype immediately removes redundant modifiers
  • KT-14143 Create from Usages: Do not suggest on type-mismatched expressions which are not call arguments
  • KT-14221 “Unused variable” is now reported only for last entry of destructuring declaration (if applicable)
  • KT-14244 Fix destructure intention for MultiMap entries
  • KT-13974 Enable use of intention to convert contains to in for CharSequence arguments
  • KT-13719 Highlighting range for “var can be val” no longer includes preceding annotations
  • KT-13884 Fix exception “Invalid root block PSI element” on replacing trivial when-expression to if
  • KT-13882 Convert Receiver to Parameter: Fix AssertionError
  • KT-14394 Lambda to reference: not-null types are now preferred for platform type receivers
  • KT-14420 Fixed false positive of “Convert lambda to reference” with nested lambdas
  • KT-14289 Correctly shorten qualified names when converting an object literal to lambda
  • KT-13958 Fixed behavior of “Surround with null check” inside if statements
  • KT-14065 Fixed false positive for “Variable can be declared immutable” for variables initialized in lambdas
  • KT-14550 Fix handling of named arguments in “Lambda to reference”
  • KT-14542 “If to elvis” handles calls with nullable result correctly

Debugger

  • KT-13534 Debugger didn‘t step into ‘for’ body if there’s inline function call in range expression
  • KT-13751 Fix behavior of “step over” for inline calls
  • KT-12924 Fixed “Step over” diving into recursive call
  • KT-14068 Fixed showing toString() method result in watches when type has delegated properties
  • KT-14488 Fixed stepping into a function starting with a val or var when “Use simple getters” option is enabled

Android

  • Lint diagnostics updated to Android Studio 2.2
  • KT-11715 “Extract string resource” intention
Issues fixed
  • KT-12022 Report lint warnings even when file contains errors

Build Tools

  • Track changes in Java files generated by kapt2
  • KT-13633 All compiler options are now exposed as properties of Kotlin Gradle task
  • KT-14056 Fixed exception “This and base file have different roots”
  • KT-10401 Don't warn about absence of kotlin files
  • KT-13823 Kapt: asMemberOf() should also check the containing type itself, not only its supertypes
  • KT-13804 Kapt: Support type parameters in asMemberOf()
  • KT-13865 Kapt: typeElement.asType() should preserve type parameters and propagate it to its supertypes
  • KT-13917 Kapt: Dispose every JeElement and JeTypeMirror because some annotation processors may store them in static fields
  • KT-13984 Kapt: Support apt options
  • KT-14003 kotlinc shebang uses env
  • KT-13638 Changed the way “Configure Kotlin in project” sets up Maven build
  • KT-13478 Fixed creating Maven project by archetype
  • KT-14253 Fixed problem when switching from kapt2 to kapt
  • KT-14250 Fixed possible incremental build failure when using kapt
  • KT-14055 Corruption of incremental compilation caches triggers automatic rebuild
  • KT-14554 Newly introduced duplicate declarations correctly lead to failure of incremental build
  • Improvements to the use of local connections in compiler daemon

JavaScript

  • KT-2752 Support for @JsName annotation
  • KT-13345 Basic support for class literals
  • KT-7500 Remove intrinsic for Long.equals, because it's applied incorrectly for nullable longs
  • KT-13576 Implement Long.hashCode function
  • KT-12810 Support special modifiers(e.g. getter and setter) in IDL
  • KT-13583 Allow local classes to capture members of outer classes
  • KT-7397 Fix is operator with object operand
  • KT-8283 Implement same semantics as JVM for comparing arrays using ==
  • KT-13664 Write values of long compile-time constants as constants
  • KT-14082 Module was wrongly treated as JVM when js-stdlib is not the first in dependencies
  • KT-13825 Write simple name of class to constructor.$metadata$.simpleName.
  • KT-12707 Proper translation of a constructor in subclass that calls secondary constructor of parent class
  • KT-8385 Fix exception during translation of for expression with iterator having generic type constrained by Iterable
  • KT-13830 Support case when LHS of augmented assignment is something different than qualified expression or array access
  • KT-14194 HashMap.putAll no longer calls getKey/getValue

J2K

  • KT-11990 native modifier is converted to external
  • KT-13146 Fix infinite loop while converting self-referenced anonymous functions
  • KT-13529 Improve conversion of Java code on paste
  • KT-11804 Fix incorrect closing parenthesis position for method split to several lines
  • KT-13628 New line was not preserved when converting Java to Kotlin
  • KT-13818 Fix conversion of quotes in @code blocks
  • KT-13750 serialVersionUID is automatically marked as const
  • KT-11375, KT-9710, KT-8161 Fix conversion of floating point numbers where Java syntax isn't supported by Kotlin
  • KT-8091 Fix conversion of octal escape sequences in string and char literals
  • KT-10545 Fix conversion of array arguments for Java annotations
  • KT-13550 Fix conversion of Boolean.TYPE
  • KT-6424 Remove @SuppressWarnings annotations and //noinspection comments during conversion
  • KT-13020, KT-13021 Do not delete unknown tags when converting Javadoc comments to KDoc
  • KT-10885 Fix conversion of assignments used as expressions
  • KT-14205 Notify user about syntax errors in files being converted
  • KT-12677 Fix detection of SAM constructor redundancy
  • KT-5410 Fix conversion of string concatentations when the first object in an expresion is not a string
  • KT-5312 Fix handling of operator priority when convering complex expressions
  • KT-14248 Fix formatting of constructors after conversion
  • KT-12892 Fix placing of constructor comments after conversion
  • KT-13695, KT-13159, KT-14531 Paste context is now more comprehensively taken into account when converting Java code copied from non-IDE sources

1.0.4

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 Extract Function: Fix AssertionError on callable references
  • KT-6520 Introduce ‘maino’ and ‘psvmo’ templates for generating main in object
  • KT-13455 Override/Implement: Make return type non-nullable (platform collection case) when overriding Java method
  • KT-10209 Find Usages: Do not duplicate containing declaration in super member warning dialog
  • KT-12977 Hybrid dependency causes “outdated binary” warning to appear in non-js project
  • KT-13057 Go to inheritors on Enum should navigate to all enum classes
  • Fix exception when choose Gradle configurer after project is synced
  • Allow configuring Kotlin in Gradle module without Kotlin sources
  • Show all Kotlin annotations when browsing hierarchy of “java.lang.Annotation”

Completion

  • KT-12793 Suggest abstract protected extension methods

Performance

  • KT-12645 Lazily calculate FQ name for local classes
  • KT-13071 Fix severe freezes because of long lint checks on large files

Highlighting

  • KT-12937 Java synthetic accessors highlighting does not differ from local variables

KDoc

  • KT-12998 Backslash is not rendered
  • KT-12999 Backtick inside inline code block is not rendered
  • KT-13000 Exclamation mark is not rendered
  • KT-10398 Fully qualified link is not resolved in editor
  • KT-12932 Link to library element is not clickable
  • KT-10654 Quick Doc can't follow KDoc link in referenced function description
  • KT-9271 Show Quick Doc for implicit lambda parameter ‘it’

Formatter

  • KT-12830 Remove spaces before ? in nullable types
  • KT-13314 Format spaces around !is and !in

Intention actions, inspections and quickfixes

New features
  • KT-12152 “Leaking 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
  • KT-13187 “Make constructor parameter a val” should make the val private or public depending on its option

  • KT-5771 Mark setter parameter type as redundant and provide quickfix to remove it

  • KT-9228 Add quickfix to remove ‘@’ from annotation used as argument of another annotation

  • KT-12251 Add quickfix to fix type mismatch for primitive literals

  • KT-12838 Add quickfix for “Illegal usage of inline parameter” that adds noinline

  • KT-13134 Add quickfix for wrong Long suffix (Use L instead of l)

  • KT-10903 Add intention to convert lambda to function reference

  • KT-7492 Support “Create abstract function/property” inside an abstract class

  • KT-10668 Support “Create member/extension” corresponding to the extension receiver of enclosing function

  • KT-12553 Show versions in inspection about different version of Kotlin plugin in Maven and IDE plugin

  • KT-12489 Implement intention to replace camel-case test function name with a space-separated one

  • KT-12730 Warn about using different versions of Kotlin Gradle plugin and bundled compiler

  • KT-13173 Handle more cases in “Add Const Modifier” Intention

  • KT-12628 Quickfix for invoke operator unsafe calls

  • KT-11425 Inspection and quickfix to replace usages of equals() and compareTo() with operators

  • KT-13113 Inspection to detect redundant string templates

  • KT-13011 Inspection and quickfix for unnecessary lateinit

  • KT-10731 Inspection and quickfix for unnecessary use of toString() inside string interpolation

  • KT-12043 Intention to add / remove braces for when entry/entries

  • KT-13483 Intention to replace a..b-1 with a until b and vice versa

  • KT-6975 Quickfix for adding ‘inline’ to a function with reified generic

Bugfixes
  • Show receiver type in the text of “Create extension” quick fix
  • Show target class name in the text of “Create member” quick fix
  • KT-12869 Usages of overridden Java method through synthetic accessors are not found
  • KT-12813 “Find Usages” for property returns function calls
  • KT-7722 Approximate unresolvable types in “Create from Usage” quickfixes
  • KT-11115 Implement Members: Fix base member detection when abstract and non-abstract members with matching signatures are inherited from an interface
  • KT-12876 Bogus suggestion to move property to constructor
  • KT-13055 Exception in “Specify Type Explicitly” intention
  • KT-12942 “Replace ‘when’ with ‘if’” intention changes semantics when ‘if’ statements are used
  • KT-12646 ‘Convert to block body’ should use partial body resolve
  • KT-12919 Use simple class name in “Change function return type” quickfix
  • KT-13151 Incorrect warning “Make variable immutable”
  • KT-13170 “Declaration has platform type” inspection: by default should not be reported for platform type arguments
  • KT-13262 “Wrap with safe let call” quickfix produces wrong result for qualified function
  • KT-13364 Do not suggest creating annotations/enum classes for unresolved type parameter bounds
  • KT-12627 Allow warnings suppression for secondary constructor
  • KT-13365 Disable “Create property” (non-abstract) in interfaces. Make “Create function” (non-abstract) generate function body in interfaces
  • KT-8903 Remove Unused Receiver: update function/property usages
  • KT-11799 Create from Usage: Make extension functions/properties ‘private’ by default
  • KT-11795 Create from Usage: Place extension properties after the usage and generate stub getter
  • KT-12951 Prohibit “Convert to expression body” when function body is ‘if’ without ‘else’ or ‘when’ is non-exhaustive
  • KT-13430 “Add non-null asserted (!!) call” quickfix can't process unary operators
  • KT-13336 “Convert concatenation to template” intention appends literal to variable omitting braces
  • KT-13328 Do not suggest “Replace infix with safe call” inside conditions or binary / unary expressions
  • KT-13452 “Replace if expression with assignment” doesn't work for cascade if-else if-else
  • KT-13184 “Different Kotlin Version” inspection: false positive caused by verbose plugin version name
  • KT-13480 “Can be replaced with comparison” inspection: false positive if extension method called ‘equals’ is used
  • KT-13288 “Unused property” inspection: false positive when extending abstract class and implementing interface
  • KT-13432 “Replace with safe call” quickfix does not work with compareTo() usage
  • KT-13444 “Invert if” intention changes semantics for nested if with return
  • KT-13536 Fix StackOverflowError from “Unused Symbol” inspection after importing enum's values()
  • KT-12820 Platform Type Inspection: !! quickfix shouldn't be available when any generic parameter has platform type
  • KT-9825 Incorrect “unused variable” warning when used in finally block
  • KT-13715 Prohibit applying “Change to star projection” to functional types

Refactorings

New features
  • KT-12017 Inline Property: Support “Do not show this dialog” and “Inline this occurrence” options
Bugfixes
  • KT-11176 Add a space before ‘{’ in functions generated “Generate hashCode/equals/toString”
  • KT-12294 Introduce Property: Fix extraction of expressions referring to primary constructor parameters
  • KT-12413 Change Signature: Fix bogus warning about unresolved type parameters/invalid functional type replacement
  • KT-12084 Introduce Property: Do not skip outer classes if extractable expression is contained in object literal
  • KT-13082 Rename: Fix exception on property rename preview
  • KT-13207 Safe delete: Fix exception when removing any function in 2016.2
  • KT-12945 Rename: Fix function description in super method warning dialog
  • KT-12922 Introduce Variable: Do not suggest expressions without type
  • KT-12943 Rename: Show function signatures in “Rename Overloads” dialog
  • KT-13157 Extract Function: Automatically quote function name if necessary
  • KT-13010 Extract Function: Fix generation of destructuring declarations
  • KT-13128 Introduce Variable: Retain entered name after changing “Specify type explicitly” option
  • KT-13054 Introduce Variable: Skip leading/trailing comments inside selection
  • KT-13385 Move: Quote package name (if necessary) when moving declarations to new file
  • KT-13395 Introduce Property: Fix duplicate count in popup window
  • KT-13277 Change Signature: Fix usage processing to prevent interfering with Python support plugin
  • KT-13254 Rename: Conflict detection for type parameters
  • KT-13282, KT-13283 Rename: Fix name quoting for automatic renamers
  • KT-13239 Rename: Warn about function name conflicts
  • KT-13174 Move: Warn about accessibility conflicts due to moving to unrelated module
  • KT-13175 Move: Warn about accessibility conflicts when moving entire file
  • KT-13240 Rename: Do not report shadowing conflict if redeclaration is detected
  • KT-13253 Rename: Report conflicts for constructor parameters
  • KT-12971 Push Down: Do not specifiy visibility on generated overriding members
  • KT-13124 Pull Up: Skip super members without explicit declarations
  • KT-13032 Rename: Support accessors with non-conventional names
  • KT-13463 Rename: Quote parameter name when necessary
  • KT-13476 Rename: Fix parameter rename when new name matches call selector
  • KT-9381 Rename: Do not search for component convention usages
  • KT-13488 Rename: Support rename of packages with non-standard quoted names

Debugger

New features
  • KT-7549 Provide an option to use the Kotlin syntax when evaluating watches and expressions in Java files
Bugfixes
  • KT-13059 Fix error stepping on Step Over action in the end of while block
  • KT-13037 Fix possible deadlock in debugger in 2016.1 and exception in 2016.2
  • KT-12651 Fix exception in evaluate expression when bad identifier is used for marking object
  • KT-12896 Fix “Step In” to inline functions for Android
  • KT-13269 Make quick evaluate work on receiver in qualified expressions
  • KT-12641 Unknown error on evaluate expression containing inline functions with complicated environment
  • KT-13163 Fix exception when evaluating expression: Access is allowed from event dispatch thread only.

JS

New features

  • KT-3008 Option to generate require.js and AMD compatible modules
  • KT-5987 Add ability to refer to class
  • KT-4115 Provide method to get Kotlin type name

Bugfixes

  • KT-8003 Compiler exception on ‘throw throw’
  • KT-8318 Wrong result for ‘when’ containing only ‘else’ block
  • KT-12157 Compiler exception on when condition containing return, break or continue
  • KT-12275 Fix code generation with inline function call in condition of while/do..while
  • KT-13160 Fix compiler exception when left-hand side of assignment is array access and right-hand side is inline function
  • KT-12864 Make enums comparable
  • KT-12865 Implementing Comparable breaks inheritance
  • KT-12928 Nested inline causes undefined reference access
  • KT-12929 Code with callable reference crashed at runtime (in some JS VMs)
  • KT-13043 Invalid invocation generated for secondary constructor that calls constructor from base class with default parameters
  • KT-13025 ‘function?.invoke’ does not work properly with extension functions
  • KT-12807 Lambda was lost in generated code
  • KT-12808 Compiler duplicates arguments and the body of lambda when lambda is in RHS of assignment operator
  • KT-12873 Fix ReferenceError when class delegates to complex expression
  • KT-13658 Wrong code when capturing object

Tools

Gradle

  • Gradle versions < 2.0 are not supported
  • KT-13234 Setting kotlinOptions.destination and kotlinOptions.classpath is deprecated
  • KT-9392 Kotlin classes are missing after converting Java class to Kotlin
  • KT-12736 Kotlin classes are deleted when generated Java source is changed
  • KT-12658 Build fails after android resources are edited
  • KT-12750 Non clean compilation fails with gradle 2.14
  • KT-12912 New class from subproject is unresolved with subsequent build with Gradle Daemon
  • KT-12962 Incremental compilation: Track changes in generated files
  • KT-12923 Incremental compilation: Compile error when code using internal class is modified
  • KT-13528 Incremental compilation: support multi-project incremental compilation
  • KT-13732 Android Build folder littered with copyFlavourTypeXXX

KAPT

New features
  • KT-13499 Implement Annotation Processing API (JSR 269) natively in Kotlin
Bugfixes
  • KT-12776 Android build fails with KAPT and generateStubs depending on library module names
  • KT-13179 Java is recompiled every time with Gradle 2.14 and KAPT
  • KT-12303, KT-12113 Do not pass non-relevant annotations to processors

REPL

  • KT-12389 REPL just quits when toString() of user class throws an exception

CLI & Ant

  • KT-13237 Include kotlin-reflect.jar to classpath by default, add ‘-no-reflect’ key to suppress this behavior

CLI

  • KT-13491 Support ‘-no-reflect’ in ‘kotlin’ command

Maven

  • KT-13211 Provide better compilation failure info for TeamCity builds

Compiler daemon

  • Fix exception “java.lang.NoClassDefFoundError: Could not initialize class kotlin.Unit”

1.0.3

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-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
  • KT-11692 Support Spring model diagrams for Kotlin classes
  • KT-12079 Support “Autowired members defined in invalid Spring bean” inspection on Kotlin declarations
  • KT-12092 Implement bean references in @Qualifier annotations
  • KT-12135 Automatically configure components based on basePackageClasses attribute of @ComponentScan
  • KT-12136 Implement package references inside of string literals
  • KT-12139 Support Spring configurations linked via @Import annotation
  • KT-12278 Implement Spring @Autowired inspection
  • KT-12465 Implement Spring @ComponentScan inspection
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 Group Kotlin classes from the same file in the Choose Bean dialog
  • KT-12120 Show autowiring candidates line markers for @Autowired-annotated constructors and constructor parameters
  • KT-12122 Fixed line marker popup on functions with @Qualifier-annotated parameters
  • KT-12143 Fixed “Spring Facet Code Configuration (Kotlin)” inspection description
  • KT-12147 Fixed exception on analyzing object declaration with @Component annotation
  • KT-12148 Warn about object declarations annotated with Spring @Configuration/@Component/etc.
  • KT-12363 Fixed “Autowired members defined in invalid Spring bean (Kotlin)” inspection description
  • KT-12366 Fixed exception on analyzing class declaration upon annotation typing
  • KT-12384 Fixed bean references in factory method calls

Intention actions, inspections and quickfixes

New features
  • New icon for “New -> Kotlin Activity” action
  • “Change visibility on exposure” and “Make visible” fixes now support all possible visibilities
  • KT-8477 New inspection “Can be primary constructor property” with quick-fix
  • KT-5010 “Redundant semicolon” inspection with quickfix
  • KT-9757 Quickfix for “Unused lambda expression” warning
  • KT-10844 Quick fix to add crossinline modifier
  • KT-11090 “Add variance modifiers to type parameters” inspection
  • KT-11255 Move Element Left/Right actions
  • KT-11450 “Modality is redundant” inspection
  • KT-11523 “Add @JvmOverloads annotation” intention
  • KT-11768 “Introduce local variable” intention
  • KT-11806 Quick-fix to increase visibility for invisible member
  • KT-11807 Use function body template when generating overriding functions with default body
  • KT-11864 Suggest “Create function/secondary constructor” quick fix on argument type mismatch
  • KT-11876 Quickfix for “Extension function type is not allowed as supertype” error
  • KT-11920 “Increase visibility” and “Decrease visibility” quickfixes for exposed visibility errors
  • KT-12089 Quickfix “Make primary constructor parameter a property”
  • KT-12121 “Add toString() call” quickfix
  • KT-11104 New quickfixes for nullability problems: “Surround with null check” and “Wrap with safe let call”
  • KT-12310 New inspection “Member has platform type” with quickfix
Issues fixed
  • Fixed “Convert property initializer getter” intention being available inside lambda initializer
  • Improved message for “Can be declared as val” inspection
  • KT-3797 Quickfix to make a function abstract should not be offered for object members
  • KT-11866 Suggest “Create secondary constructor” when constructors exist but are not applicable
  • KT-11482 Fixed exception in “Move to companion object” intention
  • KT-11483 Pass implicit receiver as argument when moving member function to companion object
  • KT-11512 Allow choosing any source root in “Move file to directory” intention
  • KT-10950 Keep original file package name when moving top-level declarations to separate file (provided it's not ambiguous)
  • KT-10174 Optimize imports after applying “Move declaration to separate file” intention
  • KT-11764 Intention "Replace with a forEach function call should replace continue with return@forEach
  • KT-11724 False suggestion to replace with compound assignment
  • KT-11805 Invert if-condition intention breaks code in case of end of line comment
  • KT-11811 “Make protected” intention for a val declared in parameters of constructor
  • KT-11710 “Replace if with elvis operator”: incorrect code generated for if expression
  • KT-11849 Replace explicit parameter with it changes the meaning of code because of the shadowing
  • KT-11870 “Replace with Elvis” refactoring doesn't change the variable type from T? to T
  • KT-12069 Specify language for all Kotlin code inspections
  • KT-11366 “object Companion is never used” warning in intellij
  • KT-11275 Inconsistent behaviour of “move lambda argument out of parentheses” intention action when using lambda calls with function arguments without parentheses
  • KT-11594 “Add non-null asserted (!!) call” applied to unsafe cast to nullable type causes AE at KtPsiFactory.createExpression()
  • KT-11982 False “Redundant final modifier” reported
  • KT-12040 “Replace when with if” produce invalid code for first entry which has comment
  • KT-12204 “Use classpath of module” option in existing Kotlin run configuration may be changed when a new run configuration is created
  • KT-10635 Don't mark private writeObject and readObject methods of Serializable classes as unused
  • KT-11466 “Make abstract” quick fix applies to outer class of object with accidentally abstract function
  • KT-11120 Constructor parameter/field reported as unused symbol even if it have used annotation
  • KT-11974 Invert if-condition intention loses comments
  • KT-10812 Globally unused constructors are not marked as such
  • KT-11320 Don't mark @BeforeClass (JUnit4) annotated functions as unused
  • KT-12267 “Change type” quick fix converts to Int for Long literal
  • KT-11949 Various problems fixed with “Constructor parameter is never used as a property” inspection
  • KT-11716 “Simply for using destructuring declaration” intention: incorrect behavior for data classes
  • KT-12145 “Simplify for using destructuring declaration” should work even when no variables declared inside loop
  • KT-11933 Entities used only by alias are marked as unused
  • KT-12193 Convert to block body isn't equivalent for when expressions returning Unit
  • KT-10779 Simplify for using destructing declaration: intention / inspection quick fix is available only when all variables are used
  • KT-11281 Fix exception on applying “Convert to class” intention to Java interface with Kotlin inheritor(s)
  • KT-12285 Fix exception on test class generation
  • KT-12502 Convert to expression body should be forbidden for non-exhaustive when returning Unit
  • KT-12260 ISE while replacing an operator with safe call
  • KT-12649 “Convert if to when” intention incorrectly deletes code
  • KT-12671 “Shot type” action: “Type is unknown” error on an invoked expression
  • KT-12284 Too wide applicability range for “Add braces to else” intention
  • KT-11975 “Invert if-condition” intention does not simplify is expression
  • KT-12437 “Replace explicit parameter” intention is suggested for parameter of inner lambda in presence of it from outer lambda
  • KT-12290 Navigate to the generated declaration when using “Implement abstract member” intention
  • KT-12376 Don‘t show "Package directive doesn’t match file location" in injected code
  • KT-12777 Fix exception in “Create class” quickfix applied to unresolved references in type arguments

Language injection

  • Apply injection for the literals in property initializer through property usages
  • Enable injection from Java or Kotlin function declaration by annotating parameter with @Language annotation
  • KT-2428 Support basic use-cases of language injection for expressions marked with @Language annotation
  • KT-11574 Support predefined Java positions for language injection
  • KT-11472 Add comment or @Language annotation after “Inject language or reference” intention automatically

Refactorings

New features
  • KT-6372 Add name suggestions to Rename dialog
  • KT-7851 Respect naming conventions in automatic variable rename
  • KT-8044, KT-9432 Support @JvmName annotation in rename refactoring
  • KT-8512 Support “Rename tests” options in Rename dialog
  • KT-9168 Support rename of synthetic properties
  • KT-10578 Support automatic test renaming for facade files
  • KT-12657 Rename implicit usages of annotation method value
  • KT-12759 Suggest renaming both property accessors with matching @JvmName when renaming one of them from Java
Issues fixed
  • KT-4791 Rename overridden property and all its accessors on attempt to rename overriding accessor in Java code
  • KT-6363 Do not rename ambiguous references in import directives
  • KT-6663 Fixed rename of ambiguous import reference to class/function when some referenced declarations are not changed
  • KT-8510 Preserve “Search in comments and strings” and “Search for text occurrences” settings in Rename dialog
  • KT-8541, KT-8786 Do now show ‘Rename overloads’ options if target function has no overloads
  • KT-8544 Show more detailed description in Rename dialog
  • KT-8562 Show conflicts dialog on attempt of redeclaration
  • KT-8611 Qualify class references to resolve rename conflicts when possible
  • KT-8732 Implement Rename conflict analysis and fixes for properties/parameters
  • KT-8860 Allow renaming class by constructor delegation call referencing primary constructor
  • KT-8892 Suggest renaming base declarations on overriding members in object literals
  • KT-9156 Quote non-identifier names in Kotlin references
  • KT-9157 Fixed in-place rename of Kotlin expression referring Java declaration
  • KT-9241 Do not replace Java references to synthetic component functions when renaming constructor parameter
  • KT-9435 Process property accessor usages (Java) in comments and string literals
  • KT-9444 Rename dialog: Allow typing any identifier without backquotes
  • KT-9446 Copy default parameter values to overriding function which is renamed while its base function is not
  • KT-9649 Constraint search scope of parameter declared in a private member
  • KT-10033 Qualify references to members of enum companions in case of conflict with enum entries
  • KT-10713 Skip read-only declarations when renaming parameters
  • KT-10687 Qualify property references to avoid shadowing by parameters
  • KT-11903 Update references to facade class when renaming file via matching top-level class
  • KT-12411 Fix package name quotation in Move refactoring
  • KT-12543 Qualify property references with this to avoid renaming conflicts
  • KT-12732 Copy default parameter values to overriding function which is renamed by Java reference while its base function is unchanged
  • KT-12747 Fix exception on file copy

Java to Kotlin converter

New features
  • KT-4727 Convert Java code copied from browser or other sources
Issues fixed
  • KT-11952 Assertion failed in PropertyDetectionCache.get on conversion of access to Java constant of anonymous type
  • KT-12046 Recursive property setter
  • KT-12039 Static imports converted missing “.Companion”
  • KT-12054 Wrong conversion of instanceof checks with raw types
  • KT-12045 Convert Object() to Any()

Android Lint

Issues fixed
  • KT-12015 False positive for Bundle.getInt()
  • KT-12023 “minSdk” lint check doesn't work for as/is
  • KT-12674 “Calling new methods on older versions” errors for inlined constants
  • KT-12681 Running lint from main menu: diagnostics reported for java source files only
  • KT-12173 False positive for “Toast created but not shown” inside SAM adapter
  • KT-12895 NoSuchMethodError thrown when saving a Kotlin file

KDoc

New features
  • Support for @receiver tag
Issues fixed
  • Rendering of _ and * standalone characters
  • Rendering of code blocks
  • KT-9933 Indentation in code fragments is not preserved
  • KT-10998 Spaces around links are missing in return block
  • KT-11791 Markdown links rendering
  • KT-12001 Allow use of @param to document type parameter

Maven support

New features
  • Inspections that check that kotlin IDEA plugin, kotlin Maven plugin and kotlin stdlib are of the same version
  • KT-11643 Inspections and intentions to fix erroneously configured Maven pom file
  • KT-11701 “Add Maven Dependency quick fix” in Kotlin source files
  • KT-11743 Intention to replace kotlin-test with kotlin-test-junit
Issues fixed
  • KT-9492 Configuring multiple Maven Modules
  • KT-11642 Kotlin Maven configurator tags order
  • KT-11436 “Choose Configurator” control opens dialogs with inconsistent modality (linux)
  • KT-11731 Default maven integration doesn't include documentation
  • KT-12568 Execution configuration: file path completion works only in some sub-elements of
  • KT-12558 Configure Kotlin in Project: “Undo” should revert changes in all poms
  • KT-12512 “Different IDE and Maven plugin version” inspection is being invoked for non-tracked pom.xml files

Debugger

New features
  • KT-11438 Support navigation from stacktrace to inline function call site
Issues fixed
  • Do not step into inline lambda argument during step over inside inline function body
  • Fix step over for inline argument with non-local return
  • KT-12067 Deadlock in Kotlin debugger is fixed
  • KT-12232 No code completion in Evaluate Expression and Throwable at CodeCompletionHandlerBase.invokeCompletion()
  • KT-12137 Evaluate expression: code completion/intention actions allows to use symbols from modules that are not referenced
  • KT-12206 NoSuchFieldError in Evaluate Expression on a property of a derived class
  • KT-12678 NoSuchFieldError in Evaluate Expression on accessing delegated property defined in other module
  • KT-12773 Fix debugging for Kotlin JS projects

Formatter

Issues fixed
  • KT-12035 Spaces around as
  • KT-12018 Spaces between function name and arguments in infix calls
  • KT-11961 Spaces before angle bracket in method definition
  • KT-12175 Don't enforce empty line between secondary constructors without body
  • KT-12548 Spaces around is keyword
  • KT-12446 Spaces before class type parameters
  • KT-12634 Spaces between method name and parenthesis in method call
  • KT-10680 Spaces around in keyword
  • KT-12791 Spaces between curly brace and expression inside string template
  • KT-12781 Spaces between annotation and expression
  • KT-12689 Spaces around semicolons
  • KT-12714 Spaces around parentheses in enum elements

Other

New features
  • Added “Decompile” button to Kotlin bytecode toolwindow
  • Added Kotlin “Tips of the day”
  • Added “Kotlin 1.1 EAP” to “Configure Kotlin Plugin updates”
  • KT-2919 Constructor calls are no longer highlighted as classes
  • KT-6540 Infix function calls are now highlighted as regular function calls
  • KT-9410 Annotations in Kotlin are now highlighted with the same color as in Java by default
  • KT-11465 Type parameters in Kotlin are now highlighted with the same color as in Java by default
  • KT-11657 Allow viewing decompiled Java source code for Kotlin-compiled classes
  • KT-11704 Support file path references inside of Kotlin string literals
  • KT-12076 Kotlin Plugin update check: always display installed version number
  • KT-11814 New icon for kotlin annotation classes
  • KT-12735 Convert JavaDoc to KDoc when overriding Java class member in Kotlin
Issues fixed
  • KT-5960 Can't find usages for Java methods used from Kotlin by call convention
  • KT-8362 “New Kotlin file”: Keywords should be escaped in package name
  • KT-8682 Respect “Copy JavaDoc” option in the “Override/Implement Members...” dialog
  • KT-8817 Fixed rename of Java getters/setters through synthetic property references in Kotlin
  • KT-9399 Find Usages omits Kotlin annotation parameter usage in Java source
  • KT-9797 “Kotlin Bytecode” toolwindow breaks after closing
  • KT-11145 Use progress indicator when searching usages in Introduce Parameter
  • KT-11155 Allow running multiple Kotlin classes as well as running mixtures of Kotlin and Java classes
  • KT-11495 Show recursion line markers for extension function calls with different receiver
  • KT-11659 Generate abstract overrides for Any members inside of Kotlin interfaces
  • KT-12070 Add empty line in error message of Maven and Gradle configuration
  • KT-11908 Allow properties with custom setters to be used in generated equals/hashCode/toString
  • KT-11617 Fixed title of Introduce Parameter declaration chooser
  • KT-11817 Fixed rename of Kotlin enum constants through Java references
  • KT-11816 Fixed usages search for Safe Delete on simple enum entries
  • KT-11282 Delete interface reference from super-type list when applying Safe Delete to Java interface
  • KT-11967 Fix Find Usages/Rename for parameter references in XML files
  • KT-10770 “Optimize imports” will not keep import if a type is only referenced by kdoc
  • KT-11955 Copy/Paste inserts fully qualified name when copying function with overloads
  • KT-12436 “Replace explicit parameter with it”: java.lang.Exception at BaseRefactoringProcessor.run()
  • KT-12440 Removing unused parameter results in Exception “Refactorings should not be started inside write action”
  • KT-12006 getLanguageLevel is slow for Kotlin light classes
  • KT-12026 “Constant expression required” in Java for const Kotlin values
  • KT-12259 ClassCastException in light classes while trying to create generic property
  • KT-12289 Remove unnecessary ? from serr live template
  • KT-12110 Map help button of the Compiler - Kotlin page
  • KT-12075 Kotlin Plugin update check: make dumbaware
  • KT-10255 call BuildManager.clearState(project) in apply() method of Kotlin Compiler Settings configurable
  • KT-11841 New Project / Module wizard, Gradle: pure Kotlin module is created without repositories call in build.gradle
  • KT-11095 Java cannot infer generic return type of Kotlin function (with java 8 language level)
  • KT-12090 Intellij/Kotlin plugin does not handle generic return type of static method defined in Kotlin, called from Java
  • KT-12206 Fix NoSuchFieldError on accessing base property without backing field in evaluate expression
  • KT-12516 File Structure: Kotlin annotation classes have Java annotation icons
  • KT-11328 “New Kotlin class”: generates packages when fully qualified name is specified
  • KT-11778 Exception in Lombok plugin: Rewrite at slice FUNCTION
  • KT-11708 “Go to declaration” doesn't work on a call to function with SAM conversion on a derived type
  • KT-12381 Prefer not-nullable return type when overriding Java method without nullability annotation
  • KT-12647 Performance improvement for test-related line markers
  • KT-12526 Kotlin intentions increase PSI modification counts from isAvailable, even in daemon threads

Reflection

Issues fixed
  • KT-11531 Optimize “KCallable.name”
  • KT-10771 Reflection on Function objects does not support lambdas with generic return type
  • KT-11824 Reflection inconsistency between member property and accessor

JS

  • Improve performance of maps and sets
Issues fixed
  • KT-6942 Generate structural equality check (i.e. Any.equals) instead of referential check (===) value equality patterns in when
  • KT-7228 Wrong AbstractList signature
  • KT-8299 Wrong access to private member in autogenerated code in data class
  • KT-11346 Reified functions like filterIsInstance are now available in JS Standard Library
  • KT-12305 Incorrect translation of vararg in @native functions
  • KT-12254 JsEmptyExpression in initializer when compiling code like val x = throw Exception()
  • KT-11960 Wrong code generated when a method of a local class calls constructor of the class
  • KT-10931 Incorrect inlining of library method with optional parameters
  • KT-12417 Wrong check cast generated for KMutableProperty

Tools

New features
  • KT-11839 Maven goal to execute kotlin script
Issues fixed
  • KAPT: fix error when using enum constructors with parameters
  • Various problems with gradle 2.2 fixed: KT-12478, KT-12406, KT-12478
  • KT-12595 JPS: Fixed com.intellij.util.io.MappingFailedException: Cannot map buffer
  • KT-11166 Gradle: Unable to access internal classes from test code within the same module
  • KT-12352 KAPT: Fix “Classpath entry points to a non-existent location” warnings
  • KT-12074 Building Kotlin maven projects using a parent pom will silently fail
  • KT-11770 Warning “RuntimeException: Could not find installation home path” when using Gradle Incremental Compilation
  • KT-10969 Android extensions: NullPointerException when finding view in Fragment
  • KT-11885 Gradle/Android: Unresolved reference “kotlinx” when classpath dependency is defined in root build.gradle
  • KT-12786 Deprecation warning with Gradle 2.14

1.0.2-1

1.0.2

Compiler

Analysis & diagnostics

  • KT-7437, KT-7971, KT-7051, KT-6125, KT-6186, KT-11649 Implement missing checks for protected visibility
  • KT-11666 Report “Implicit nothing return type” on non-override member functions
  • KT-4328, KT-11497, KT-10493, KT-10820, KT-11368 Report error if some classes were not found due to missing or conflicting dependencies
  • KT-11280 Do not perform smart casts for values with custom equals compared with ==
  • KT-3856 Fix wrong “inner class inaccessible” diagnostic for extension to outer class
  • KT-3896, KT-3883, KT-4986 do...while (true) is now considered an infinite loop
  • KT-10445 Prohibit initialization of captured val in lambda or in local function
  • KT-10042 Correctly handle local classes and anonymous objects in control flow analysis
  • KT-11043 Prohibit complex expressions with class literals in annotation arguments
  • KT-10992, KT-11007 Fix multiple problems related to smart casts
  • KT-11490 Prohibit nested intersection types in return position
  • KT-11411 Report “illegal noinline/crossinline” on parameter of subtype of function type
  • KT-3083 Report “conflicting overloads” for functions with parameter of type parameter type
  • KT-7265 Parse anonymous functions in blocks as expressions
  • KT-8246 Handle break/continue for outer loop correctly in case of try/finally in between
  • KT-11300 Report error on increment or augmented assignment when get is an operator but set is not
  • Report warning about unused anonymous functions
  • Improve callable reference type in some ambiguous cases
  • Improve multiple diagnostic messages: KT-10761, KT-9760, KT-10949, KT-9887, KT-9550, KT-11239, KT-11819
  • Fix several compiler bugs leading to exceptions: KT-9820, KT-11597, KT-10983, KT-10972, KT-11287, KT-11492, KT-11765, KT-11869

JVM code generation

  • KT-8269, KT-9246, KT-10143 Fix visibility of protected classes in bytecode
  • KT-11363 Fix potential binary compatibility breakage on using when over enums in inline functions
  • KT-11762 Fix VerifyError caused by explicit loop variable type
  • KT-11645 Fix NoSuchFieldError on private const property in multi-file class
  • KT-9670 Optimize Class <-> KClass wrapping/unwrapping when getting values from annotation
  • KT-6842 Optimize unnecessary boxing and interface calls on iterating over ranges
  • KT-11025 Don't inline const val properties in non-annotation contexts
  • KT-5429 Write nullability annotations on extension receiver parameters
  • KT-11347 Preserve source file and line number of call site when inlining certain standard library functions
  • KT-11677 Write correct generic signatures for local classes in inlined lambdas
  • KT-12127 Do not write unnecessary generic signature for property delegate backing field
  • Fix multiple issues leading to exceptions or bad bytecode being generated: KT-11034, KT-11519, KT-11117, KT-11479

Java interoperability

  • KT-3068 Load contravariantly projected collections in Java (List<? super T>) as mutable collections in Kotlin (MutableList<in T>)
  • KT-11322 Do not lose type nullability information in SAM constructors
  • KT-11721 Fix wrong “Typechecker has run into recursive problem” error on calling Kotlin get function as synthetic Java property
  • KT-10691 Fix wrong “Inherited platform declarations clash” error on inheritance from generic Java class with overloaded methods

Command line compiler

  • KT-9546 Flush stdout and stderr before shutdown when executing scripts
  • KT-10605 Disable colored output on certain platforms to prevent crashes
  • Report warning instead of error on unknown “-X” flags
  • Remove the compiler option “Xmultifile-facades-open”

Compiler daemon

  • Reduce read disk activity
  • Fix compiler daemon JAR cache clearing on IDEA Ultimate

Standard library

  • KT-11410 Reduce method count of the standard library by ~2k
  • KT-9990 Optimize snapshot operations to return special collection implementations when result is empty or has single element
  • KT-10794 EmptyList now implements RandomAccess
  • KT-10821 Create at most one wrapper sequence for adjacent drop/take operations on sequences
  • KT-11301 Make Map.plus accept Map out-projected by key type as either operand (receiver or parameter)
  • KT-11485 Remove implementations of some internal intrinsic functions
  • KT-11648 Add deprecated extension MutableList.remove to redirect to valid function removeAt
  • KT-11348 kotlin.test: Make inline methods todo and currentStackTrace @InlineOnly not to lose stack trace
  • KT-11745 Rename parameters of String.subSequence to match those of CharSequence.subSequence
  • KT-10953 Clarify parameter order of lambda function parameter of *Indexed functions
  • KT-10198 Improve docs for binarySearch functions
  • KT-9786 Improve docs for trimIndent/trimMargin

Reflection

  • KT-9952 Improve toString() for lambdas and function expressions when kotlin-reflect.jar is available
  • KT-11433 Fix multiple resource leaks by closing InputStream instances
  • KT-8131 Fix exception from calling KProperty.javaField on a subclass
  • KT-10690 Support javaMethod and kotlinFunction for top level functions in a different file
  • KT-11447 Support reflection calls to multifile class members
  • KT-10892 Load annotations of const properties from multifile classes
  • KT-11258 Don't crash on requesting members of Java collection classes
  • KT-11502 Clarify KClass equality

JS

  • KT-4124 Support nested classes
  • KT-11030 Support local classes
  • KT-7819 Support non-local returns in local lambdas
  • KT-6912 Safe calls (x?.let { it }) are now inlined
  • KT-2670 Support unsafe casts (as)
  • KT-7016, KT-8012 Fix is-checks for reified type parameters
  • KT-7038 Avoid unwanted side effects on is-checks for nullable types
  • KT-10614 Copy array on vararg call with spread operator
  • KT-10785 Correctly translate property names and receiver instances in assignment operations
  • KT-11611 Fix translation of default value of secondary constructor's functional parameter
  • KT-11100 Fix generation of invoke on objects and companion objects
  • KT-11823 Fix capturing of outer class' this in inner's lambdas
  • KT-11996 Fix translation of a call to a private member of an outer class from an inner class which is a subtype of the outer class
  • KT-10667 Support inheritance from nested built-in types such as Map.Entry
  • KT-7480 Remove declarations of LinkedList, SortedSet, TreeSet, Enumeration
  • KT-3064 Implement CharSequence.repeat

IDE

New features:

  • Spring Support
    • KT-11098 Inspection on final classes/functions annotated with Spring @Configuration/@Component/@Bean
    • KT-11405 Navigation and Find Usages for Spring beans referenced in annotation arguments and BeanFactory method calls
    • KT-3741 Show Spring-specific line markers on Kotlin classes
    • KT-11406 Support Spring EL injections inside of Kotlin string literals
    • KT-11604 Support “Configure Spring facet” inspection on Kotlin classes
    • KT-11407 Implement “Generate Spring Dependency...” actions
    • KT-11408 Implement “Generate @Autowired Dependency...” action
    • KT-11652 Rename bean attributes mentioned in Spring XML config together with corresponding Kotlin declarations
  • Enable precise incremental compilation by default in non-Maven/Gradle projects
  • KT-11612 Highlight named arguments
  • KT-7715 Highlight vars that can be replaced by vals
  • KT-5208 Intention action to convert string to raw string and back
  • KT-11078 Quick fix to remove .java when KClass is expected
  • KT-1494 Inspection to highlight public members with no documentation
  • KT-8473 Intention action to implement interface or abstract class
  • KT-10299 Inspection to warn on array properties in data classes
  • KT-6674 Inspection to warn on protected symbols in effectively final classes
  • KT-11576 Quick fix to suppress “Unused symbol” warning based on annotations on the declaration
  • KT-10063 Quick fix for adding arrayOf wrapper for annotation parameters
  • KT-10476 Quick fix for converting primitive types
  • KT-10859 Quick fix to make var with private setter final
  • KT-9498 Quick fix to specify property type
  • KT-10509 Quick fix to simplify condition with senseless comparison
  • KT-11404 Quick fix to let type implement missing interface
  • KT-6785, KT-10013, KT-9996, KT-11675 Support Smart Enter for trailing lambda argument, try/catch/finally, property setter, init block
  • Add kotlinClassName() and kotlinFunctionName() macros for use in live templates
  • Auto-configure EAP-repository during Kotlin Maven and Gradle project set up

Issues fixed:

  • KT-11678, KT-4768 Support navigation to Kotlin libraries from Java sources
  • KT-9401 Support Change Signature quick fix for Java -> Kotlin case
  • KT-8592 Fix “Choose sources” for Kotlin files
  • KT-11256 Fix Navigate to declaration for Java constructor with @NotNull parameter
  • KT-11018 Fix vars shown in Ctrl + Mouse Hover as vals
  • KT-5105, KT-11024 Improve incompatible ABI versions editor strap, show the hint on how to resolve the problem
  • KT-11638 Fixed hashCode() implementation in “Generate equals/hashCode” action
  • KT-10971 Pull Members Up: Always insert spaces between keywords
  • KT-11476, KT-4175, KT-10965, KT-11076 Formatter: fix multiple issues regarding space handling
  • KT-9025 Improve “Create Kotlin Java runtime library” dialog usability
  • KT-11481 Fix “Add import” intention not being available for is branches in when
  • KT-10619 Fix completion after package name in annotation
  • KT-10621 Do not show non-top level packages after @ in completion
  • KT-11295 “Convert string to template” intention: fix exception on certain code
  • KT-10750, KT-11424 “Convert if to when” intention now detects effectively else branches in subsequent code and performs more accurate comment handling
  • Configure Kotlin: show only changed files in the notification “Kotlin not configured”, restore all changed files in undo action
  • KT-11556 Do not show “Kotlin not configured” for Kotlin JS projects
  • KT-11593 Fix “Configure Kotlin” action for Gradle projects in IDEA 2016
  • KT-11077 Use new built-in definition file format (.kotlin_builtins files)
  • KT-5728 Remove closing curly brace in a string template when opening one is deleted
  • KT-10883 “Explicit get or set call” quick fix: do not move caret too far away
  • KT-5717 “Replace when with if”: do not lose comments
  • KT-10797 “Replace with operator” intention is not available anymore for non-operator functions
  • KT-11529 Highlighting range for unresolved annotation name does not include @ now
  • KT-11178 Don‘t show “Change type arguments” fix when there’s nothing to change
  • KT-11789 Don't interpret annotations inside Markdown code blocks as KDoc tags
  • KT-11702 Fixed resolution of Kotlin beans with custom name
  • KT-11689 Fixed exception on attempt to navigate to Kotlin file from Spring notification balloon
  • KT-11725 Fixed renaming of injected SpEL references
  • KT-11720 Fixed renaming of Kotlin beans through SpEL references
  • KT-11719 Fixed renaming of Kotlin parameters references in XML files
  • KT-11736 Fixed searching of Java usages for @JvmStatic properties and @JvmStatic @JvmOverloads functions
  • KT-11862 Fixed bogus warnings about unresolved types in the Change Signature dialog
  • Fix several issues leading to exceptions: KT-11579, KT-11580, KT-11777, KT-11868, KT-11845, KT-11486
  • Fixed NoSuchFieldException in Kotlin module settings on IDEA Ultimate

Debugger

  • KT-11705 “Smart step into” no longer skips methods from subclasses
  • Debugger can now distinguish nested inline arguments
  • KT-11326 Support private classes in Evaluate Expression
  • KT-11455 Fix Evaluate Expression behavior for files with errors in sources
  • KT-10670 Fix Evaluate Expression behavior for inline functions with default parameters
  • KT-11380 Evaluate Expression now handles smart casts correctly
  • KT-10148 Do not suggest methods from outer context in “Smart step into”
  • Fix Evaluate Expression for expression created for array element
  • Complete private members from libraries in Evaluate Expression
  • KT-11578 Evaluate Expression: do not highlight completion variants from nullable receiver with grey
  • KT-6805 Convert Java expression to Kotlin when opening Evaluate Expression from Variables view
  • KT-11927 Fix “ambiguous import” error when invoking Evaluate Expression from Variables view for some field
  • KT-11831 Fix Evaluate Expression for values of raw types
  • Show error message when debug info for some local variable is corrupted
  • Avoid 1s delay in completion in debugger fields if session is not stopped on a breakpoint
  • Avoid cast to runtime type unavailable in current scope
  • Fix text with line breaks in popup with line breakpoint variants
  • Fix breakpoints inside inline functions in libraries sources
  • Allow breakpoints at catch clause declaration
  • KT-11848 Fix breakpoints inside generic crossinline lambda argument body
  • KT-11932 Fix Step Over for while loop condition

Java to Kotlin converter

  • Protected members used outside of inheritors are converted as public
  • Support conversion for annotation constructor calls
  • Place comments from the middle of the call to the end
  • Drop line breaks between operator arguments (except +, -, && and ||)
  • Add non-null assertions on call site for non-null parameters
  • Specify type for variables with anonymous type if they have write accesses
  • KT-11587 Fix conversion of static field accesses from other Java class
  • KT-6800 Quote $ symbols in converted strings
  • KT-11126 Convert annotations in annotations parameters correctly
  • KT-11600 Do not produce unresolved toArray calls for Java Collection#toArray(T[])
  • KT-11544 Fix conversion of uninitialized non-final field
  • KT-10604 Fix conversion of scratch files
  • KT-11543 Do not produce unnecessary casts of non-nullable expression to nullable type
  • KT-11160 Fix IDE freeze

Android

  • KT-7729 Add Android Lint checks for Kotlin (from Android Studio 1.5)
  • KT-11487 Fixed sequential build with kapt and stubs enabled when Kotlin source file was modified and no Java source files were modified
  • KT-11264 Action to create new activity in Kotlin
  • KT-11201 Do not ignore items with similar names in kapt
  • KT-11944 Rename Android Extensions imports when the layout file is renamed/deleted/added
  • KT-10321 Do not upcast ViewStub to View
  • KT-10841 Support @android:id/* IDs in Android Extensions

Maven

Gradle

  • KT-8487 Experimental support for incremental compilation with project property kotlin.incremental
  • KT-11350 Fixed a bug causing Java rebuild when both Java and Kotlin are up-to-date
  • KT-10507 Fix IllegalArgumentException “Missing extension point” on parallel builds
  • KT-10932 Prevent compile tasks from running when nothing changes
  • KT-11993 Fix NoSuchMethodError on access to internal members in production from tests (IDEA 2016+)

1.0.1-2

Compiler

  • KT-11584, KT-11514 Correct comparison of Long! / Double! with integer constant
  • KT-11590 SAM adapter for inline function corrected

1.0.1-1

Compiler

  • KT-11468 More correct use-site / declaration-site variance combination handling
  • KT-11478 “Couldn't inline method call” internal compiler error fixed

1.0.1

Compiler

Analysis & diagnostics issues fixed:

  • KT-2277 Local function declarations are now checked for overload conflicts
  • KT-3602 Special diagnostic is reported now on nullable ‘for’ range
  • KT-10775 No compilation exception for empty when
  • KT-10952 False deprecation warnings removed
  • KT-10934 Type inference improved for whens
  • KT-10902 Redeclaration is reported for top-level property vs classifier conflict
  • KT-9985 Correct handling of safe call arguments in generic functions
  • KT-10856 Diagnostic about projected out member is reported correctly on calls with smart cast receiver
  • KT-5190 Calls of Java 8 Stream.collect
  • KT-11109 Warning is reported on Strictfp annotation on a class because it's not supported yet
  • KT-10686 Support generic constructors defined in Java
  • KT-6958 Fixed resolution for overloaded functions with extension lambdas
  • KT-10765 Correct handling of overload conflict between constructor and function in JPS
  • KT-10752 If inferred type for an expression refers to a non-accessible Java class, it's a compiler error to prevent IAE in runtime
  • KT-7415 Approximation of captured types in signatures
  • KT-10913, KT-10186, KT-5198 False “unreachable code” fixed for various situations
  • Minor: KT-3680, KT-9702, KT-8776, KT-6745, KT-10919, KT-9548

JVM code generation issues fixed:

  • KT-11153 NoClassDefFoundError is fixed on primitive iterators during boxing optimization
  • KT-7319 Correct parameter names for @JvmOverloads-generated methods
  • KT-10425 Non-const values of member properties are not inlined now
  • KT-11163 Correct calls of custom compareTo on primitives
  • KT-11081 Reified type parameters are correctly stored in anonymous objects
  • KT-11121 Generic properties generation is fixed for interfaces
  • KT-11285, KT-10958 Special bridge generation refined
  • KT-10313, KT-11190, KT-11192, KT-11130 Diagnostics and bytecode fixed for various operations with Long
  • KT-11203, KT-11191, KT-11206, KT-8505, KT-11203 Handling of increment / decrement for collection elements with user-defined get / set fixed
  • KT-9739 Backticked names with spaces are generated correctly

JS translator issues fixed:

Standard library

  • KT-10579 Improved performance of sum() and average() for arrays
  • KT-10821 Improved performance of drop() / take() for sequences

Reflection

  • KT-10840 Fix annotations on Java elements in reflection

IDE

New features:

  • Compatibility with IDEA 2016
  • Kotlin Education Plugin (for IDEA 2016)
  • KT-9752 More usable file chooser for “Move declaration to another file”
  • KT-9697 Move method to companion object and back
  • KT-7443 Inspection + intention to replace assert (x != null) with “!!” or elvis

General issues fixed:

  • KT-11277 Correct moving of Java classes from project view
  • KT-11256 Navigate Declaration fixed for Java classes with @NotNull parameter in constructor
  • KT-10553 A warning provided when Refactor / Move result is not compilable due to visibility problems
  • KT-11039 Parameter names are now not missing in parameter info and completion for compiled java code used from kotlin
  • KT-10204 Highlight usages in file is working now for function parameter
  • KT-10954 Introduce Parameter (Ctrl+Alt+P) fixed when default value is a simple name reference
  • KT-10776 Intentions: “Convert to lambda expression” works now for empty function body
  • KT-10815 Generate equals() and hashCode() is no more suggested for interfaces
  • KT-10818 “Initialize with constructor parameter” fixed
  • KT-8876 “Convert member to extension” now removes modality modifiers (open / final)
  • KT-10800 Create enum entry now adds comma after a new entry
  • KT-10552 Pull Members Up now takes visibility conflicts into account
  • KT-10978 Partially fixed, completion for JOOQ became ~ 10 times faster
  • KT-10940 Reference search optimized for convention functions
  • KT-9026 Editor no more locks up during scala file viewing
  • KT-11142, KT-11276 Darkula scheme appearance corrected for Kotlin
  • Minor: KT-10778, KT-10763, KT-10908, KT-10345, KT-10696, KT-11041, KT-9434, KT-8744, KT-9738, KT-10912

Configuration issues fixed:

  • KT-11213 Kotlin plugin version corrected in build.gradle
  • KT-10918 “Update Kotlin runtime” action does not try to update the runtime coming in from Gradle
  • KT-11072 Libraries in maven, gradle and ide systems are never more detected as runtime libraries
  • KT-10489 Configuration messages are aggregated into one notification
  • KT-10831 Configure Kotlin in Project: “All modules containing Kotlin files” does not list modules not containing Kotlin files
  • KT-10366 Gradle import: no fake “Configure Kotlin” notification on project creating

Debugger issues fixed:

  • KT-10827 Fixed debugger stepping for inline calls
  • KT-10780 Breakpoints in a lazy property work correctly
  • KT-10634 Watches can now use private overloaded functions
  • KT-10611 Line breakpoints now can be created inside lambda in init block
  • KT-10673 Breakpoints inside lambda are no more ignored in presence of crossinline function parameter
  • KT-11318 Stepping inside for each is optimized
  • KT-3873 Editing code while standing on breakpoint is optimized
  • KT-7261, KT-7266, KT-10672 Evaluate expression applicability corrected

Tools