120 KiB
Changelog 1.0.X
1.0.7
IDE
- Project View: Fix presentation of Kotlin files and their members when @JvmName having the same name as the file itself
KT-15611Extract Interface/Superclass: Disable const-properties- Pull Up: Fix pull-up from object to superclass
KT-15602Extract Interface/Superclass: Disable "Make abstract" for inline/external/lateinit members- Extract Interface: Disable inline/external/lateinit members
KT-12704,KT-15583Override/Implement Members: Support all nullability annotations respected by the Kotlin compilerKT-15563Override Members: Allow overriding virtual synthetic members (e.g. equals(), hashCode(), toString(), etc.) in data classesKT-15355Extract Interface: Disable "Make abstract" and assume it to be true for abstract members of an interfaceKT-15353Extract Superclass/Interface: Allow extracting class with special name (and quotes)KT-15643Extract Interface/Pull Up: Disable "Make abstract" and assume it to be true for primary constructor parameter when moving to an interfaceKT-15607Extract Interface/Pull Up: Disable internal/protected members when moving to an interfaceKT-15640Extract Interface/Pull Up: Drop 'final' modifier when moving to an interfaceKT-15639Extract Superclass/Interface/Pull Up: Add spaces between 'abstract' modifier and annotationsKT-15606Extract Interface/Pull Up: Warn about private members with usages in the original classKT-15635Extract Superclass/Interface: Fix bogus visibility warning inside a member when it's being moved as abstractKT-15598Extract Interface: Red-highlight members inherited from a super-interface when that interface reference itself is not extractedKT-15674Extract Superclass: Drop inapplicable modifiers when converting property-parameter to ordinary parameterKT-15444Spring Support: Consider declaration open if it's supplemented with a preconfigured annotation in corresponding compiler plugin
Intention actions, inspections and quickfixes
New features
KT-15068Implement intention which rename file according to the top-level class name- Implement quickfix which enables/disables coroutine support in module or project
KT-15056Implement intention which converts object literal to classKT-8855Implement "Create label" quick fixKT-15627Support "Change parameter type" for parameters with type-mismatched default value
1.0.6
IDE
KT-13811Expose JVM target setting in IntelliJ IDEA plugin compiler configuration UIKT-12410Expose language version setting in IntelliJ IDEA plugin compiler configuration UI
Intention actions, inspections and quickfixes
KT-14569Convert Property to Function Intention: Search occurrences using progress dialogKT-14501Create from Usage: Support array access expressions/binary expressions with type mismatch errorsKT-14500Create from Usage: Suggest functional type based on the call with lambda argument and unresolved invoke()KT-14459Initialize with Constructor Parameter: Fix IDE freeze on properties in generic classKT-14044Fix exception on deleting unused declaration in IDEA 2016.3KT-14019Create from Usage: Support generation of abstract members for superclassesKT-14246Intentions: Convert function type parameter to receiverKT-14246Intentions: Convert function type receiver to parameter
New features
KT-14729Implement "Add names to call arguments" intentionKT-11760Create from Usage: Support adding type parameters to the referenced type
Refactorings
KT-14583Change Signature: Use new signature when looking for redeclaration conflictsKT-14854Extract Interface: Fix NPE on dialog openingKT-14814Rename: Fix renaming of .kts file to .kt and vice versaKT-14361Rename: Do not report redeclaration conflict for private top-level declarations located in different filesKT-14596Safe Delete: Fix exception on deleting Java class used in Kotlin import directive(s)KT-14325Rename: Fix exceptions on moving file with facade class to another packageKT-14197Move: Fix callable reference processing when moving to another packageKT-13781Extract Function: Do not wrap companion member references inside of thewithcall
New features
KT-14792Rename: Suggest respective parameter name for the local variable passed to function
1.0.5
IDE
KT-9125Support Type Hierarchy on references inside of super type call entriesKT-13542Rename: Do not search parameter text occurrences outside of its containing declarationKT-8672Rename: Optimize search of parameter references in calls with named argumentsKT-9285Rename: Optimize search of private class membersKT-13589Use TODO() consistently in implementation stubsKT-13630Do not show Change Signature dialog when applying "Remove parameter" quick-fix- Re-highlight only single function after local modifications
KT-13474Fix performance of typing super call lambda- Show "Variables and values captured in a closure" highlighting only for usages
KT-13838Add file name to the presentation of private top-level declaration (Go to symbol, etc.)KT-14096Rename: When renaming Kotlin file outside of source root do not rename its namesake in a source rootKT-13928Move Inner Class to Upper Level: Fix replacement of outer class instances used in inner class constructor callsKT-12556Allow using whitespaces and other symbols in "Generate -> Test Function" dialogKT-14122Generate 'toString()': Permit for data classesKT-12398Call Hierarchy: Show Kotlin usages of Java methodsKT-13976Search Everywhere: Render function parameter typesKT-13977Search Everywhere: Render extension type in prefix position- Implement Kotlin facet
Intention actions, inspections and quickfixes
KT-9490Convert receiver to parameter: use template instead of the dialogKT-11483Move to Companion: Do not use qualified names as labelsKT-13874Move to Companion: Fix AssertionError on running refactoring from Conflicts ViewKT-13883Move to Companion Object: Fix exception when applied to classKT-13876Move to Companion Object: Forbid for functions/properties referencing type parameters of the containing classKT-13877Move to Companion Object: Warn if companion object already contains function with the same signatureKT-13933Convert Parameter to Receiver: Do not qualify companion members with labeled 'this'KT-13942Redundant 'toString()' in String Template: Disable for qualified expressions with 'super' receiverKT-13878Remove Redundant Receiver Parameter: Fix exception receiver removalKT-14143Create from Usages: Do not suggest on type-mismatched expressions which are not call argumentsKT-13882Convert Receiver to Parameter: Fix AssertionErrorKT-14199Add Library: Fix exception due to resolution being run in the "dumb mode"- Convert Receiver to Parameter: Fix this replacement
New features
KT-11525Implement "Create type parameter" quickfixKT-9931Implement "Remove unused assignment" quickfixKT-14245Implement "Convert enum to sealed class" intentionKT-14245Implement "Convert sealed class to enum" intention
Refactorings
KT-13535Pull Up: Remove visibility modifiers on adding 'override'KT-13216Move: Report separate conflicts for each property accessorKT-13216Move: Forbid moving of enum entriesKT-13553Move: Do not show directory selection dialog if target directory is already specified by drag-and-dropKT-8867Rename: Rename all overridden members if user chooses to refactor base declaration(s)- Pull Up: Drop 'override' modifier if moved member doesn't override anything
KT-13660Move: Do not drop object receivers when calling variable of extension functional typeKT-13903Move: Remove companion object which becomes empty after the moveKT-13916Move: Report visibility conflicts in import directivesKT-13906Move Nested Class to Upper Level: Do not show directory selection dialog twiceKT-13901Move: Do not ignore target directory selected in the dialog (DnD mode)KT-13904Move Nested Class to Upper Level: Preserve state of "Search in comments"/"Search for text occurrences" checkboxesKT-13909Move Files/Directories: Fix behavior of "Open moved files in editor" checkboxKT-14004Introduce Variable: Fix exception on trying to extract variable of functional typeKT-13726Move: Fix bogus conflicts due to references resolving to wrong library versionKT-14114Move: Fix exception on moving Kotlin file without declarationsKT-14157Rename: Rename do-while loop variables in the loop conditionKT-14128,KT-13862Rename: Use qualified class name when looking for occurrences in non-code filesKT-6199Rename: Replace non-code class occurrences with new qualified nameKT-14182Move: Show error message on applying to enum entries- Extract Function: Support implicit abnormal exits via Nothing-typed expressions
KT-14285Rename: Forbid on backing field referenceKT-14240Introduce Variable: Do not replace assignment left-hand sidesKT-14234Rename: Do not suggest type-based names for functions with primitive return types
New features
KT-13155Implement "Introduce Type Parameter" refactoringKT-11017Implement "Extract Superclass" refactoringKT-11017Implement "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 dialogKT-9485Push Down: Support moving members from Java to Kotlin classKT-13963Rename: Implement popup chooser for overriding members
Android Lint
Issues fixed
KT-12022Report lint warnings even when file contains errors
1.0.4
Compiler
Analysis & diagnostics
KT-10968,KT-11075,KT-12286Type inference of callable referencesKT-11892Report error on qualified super call to a supertype extended by a different supertypeKT-12875Report error on incorrect call of member extension invokeKT-12847Report error on accessing protected property setter from super class' companionKT-12322Overload resolution ambiguity with constructor reference when class has a companion objectKT-11440Overload resolution ambiguity on specialized Map.put implementation from JavaKT-11389Runtime exception when calling Java primitive overloadingsKT-8200Exception when using non-generic interface with generic argumentsKT-10237Exception on an unresolved symbol in a type parameter bound in the 'where' clauseKT-11821Exception on incorrect number of generic arguments in a type parameter bound in the 'where' clauseKT-12482Exception: Implementation doesn't have the most specific type, but none of the other overridden methods does eitherKT-12687Exception when 'data' modifier is applied to objectKT-9620AssertionError in DescriptorResolver#checkBoundsKT-3689IllegalAccess on a property with private setter of the subclassKT-6391Wrong warning for array casting (Array<Any?> to Array)KT-8596Exception when analyzing nested class constructor reference in an argument positionKT-12982Incorrect type inference when accessing mutable protected property via reflectionKT-13206Report "Cast never succeeds" if and only if ClassCastException can be predictedKT-12467IllegalStateException: Concrete fake override should have exactly one concrete super-declaration: []KT-13340Report "return is not allowed here" only on the return keyword, not the whole expressionKT-2349,KT-6054Report "uninitialized enum entry" if enum entry is referenced before its declarationKT-12809Report "uninitialized variable" if property is referenced before its declarationKT-260Do not report "cast never succeeds" when casting nullable to nullableKT-11769Prohibit access from enum instance initialization code to members of enum's companion objectKT-13371Fix CompilationException: Rewrite at slice LEAKING_THIS key: REFERENCE_EXPRESSIONKT-13401Fix StackOverflowError when checking varianceKT-13330,KT-13349Fix AssertionError: Illegal resolved call to variable with invokeKT-13421Fix AssertionError: Only integer constants should be checked for overflowKT-13555Fix internal error "resolveToInstruction"KT-8989Change error messages: Replace "invisible_fake" with "invisible (private in a supertype)"KT-13612Val reassignment in try / catchKT-5469Incorrect "is never used" warning for value used in catch blockKT-13510Missing "Nested class not allowed" error for anonymous object inside val initializerKT-13685Fix 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-7118Improve error message after trailing dot in floating point literalKT-4948Recover by following keywordKT-7915Recover after val with no subsequent nameKT-12987Recover after val with no name before declaration starting with soft keyword
JVM code generation
KT-12909Do not generate redundant bridge for special built-in overrideKT-11915Exception in entrySet when Map implementation in Kotlin extends another oneKT-12755Exception on property generation in multi-file classesKT-12983VerifyError: Bad type on operand stack in arraylengthKT-12908Variable initialization in loop causes VerifyError: Bad local variable typeKT-13040Invalid bytecode generated for extension lambda invocation with safe callKT-13023Char operations throw ClassCastException for boxed CharsKT-11634Exception for super call in delegationKT-12359Redundant stubs are generated on inheriting from java.util.CollectionKT-11833Error generating constructors of class on anonymous object inheriting from nested class of super classKT-13133Incorrect InnerClasses attribute value for anonymous object copied from an inline functionKT-13241Indices optimization leads to VerifyError with smart cast receiverKT-13374Fix compiler exception when inline function contains anonymous object implementing an interface by delegation
Generated code performance
KT-11964No TABLESWITCH in when on enum bytecode if enum constant is importedKT-6916Optimize 'for' over 'downTo'KT-12733Optimize 'for' over 'rangeTo' as a non-qualified call
Standard Library
KT-13115,KT-13297Improve documentation formatting, clarify documentation forFileTreeWalk,SequenceandgenerateSequence.KT-12894Do not fail inCloseable.useif the resource isnull.
Reflection
KT-12915Runtime exception on callBy of JvmStatic function with default argumentsKT-12967Runtime exception on reference to generic propertyKT-13370NullPointerException on companionObjectInstance of a built-in classKT-13462Make KClass for primitive type equal to the corresponding KClass for wrapper type
IDE
KT-12655New Kotlin file: extra error message for already existing fileKT-12760Prohibit running non-Unit returning main functionKT-12893Impossible to open Kotlin compiler settingsKT-10433Copy-pasting reference to companion object member causes import dialogKT-12803Class is marked as unused when it is only used is in method referenceKT-13084Run test method action executes all tests from same kotlin fileKT-12718Deadlock due to index reenteringKT-13114'Unused declaration' option 'JUnit static methods' is always enabledKT-12997Override/Implement Members: Support "Copy JavaDoc" options for library classesKT-12887"Extend selection" should select call's invoked expressionKT-13383,KT-13379Override/Implement Members: Do not make return type non-nullable if base return type is explicitly nullableKT-13218Extract Function: Fix AssertionError on callable referencesKT-6520Introduce 'maino' and 'psvmo' templates for generating main in objectKT-13455Override/Implement: Make return type non-nullable (platform collection case) when overriding Java methodKT-10209Find Usages: Do not duplicate containing declaration in super member warning dialogKT-12977Hybrid dependency causes "outdated binary" warning to appear in non-js projectKT-13057Go 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-12793Suggest abstract protected extension methods
Performance
KT-12645Lazily calculate FQ name for local classesKT-13071Fix severe freezes because of long lint checks on large files
Highlighting
KT-12937Java synthetic accessors highlighting does not differ from local variables
KDoc
KT-12998Backslash is not renderedKT-12999Backtick inside inline code block is not renderedKT-13000Exclamation mark is not renderedKT-10398Fully qualified link is not resolved in editorKT-12932Link to library element is not clickableKT-10654Quick Doc can't follow KDoc link in referenced function descriptionKT-9271Show Quick Doc for implicit lambda parameter 'it'
Formatter
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-5771Mark setter parameter type as redundant and provide quickfix to remove it -
KT-9228Add quickfix to remove '@' from annotation used as argument of another annotation -
KT-12251Add quickfix to fix type mismatch for primitive literals -
KT-12838Add quickfix for "Illegal usage of inline parameter" that addsnoinline -
KT-13134Add quickfix for wrong Long suffix (UseLinstead ofl) -
KT-10903Add intention to convert lambda to function reference -
KT-7492Support "Create abstract function/property" inside an abstract class -
KT-10668Support "Create member/extension" corresponding to the extension receiver of enclosing function -
KT-12553Show versions in inspection about different version of Kotlin plugin in Maven and IDE plugin -
KT-12489Implement intention to replace camel-case test function name with a space-separated one -
KT-12730Warn about using different versions of Kotlin Gradle plugin and bundled compiler -
KT-13173Handle more cases in "Add Const Modifier" Intention -
KT-12628Quickfix forinvokeoperator unsafe calls -
KT-11425Inspection and quickfix to replace usages ofequals()andcompareTo()with operators -
KT-13113Inspection to detect redundant string templates -
KT-13011Inspection and quickfix for unnecessary lateinit -
KT-10731Inspection and quickfix for unnecessary use of toString() inside string interpolation -
KT-12043Intention to add / remove braces for when entry/entries -
KT-13483Intention to replacea..b-1witha until band vice versa -
KT-6975Quickfix 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-12869Usages of overridden Java method through synthetic accessors are not foundKT-12813"Find Usages" for property returns function callsKT-7722Approximate unresolvable types in "Create from Usage" quickfixesKT-11115Implement Members: Fix base member detection when abstract and non-abstract members with matching signatures are inherited from an interfaceKT-12876Bogus suggestion to move property to constructorKT-13055Exception in "Specify Type Explicitly" intentionKT-12942"Replace 'when' with 'if'" intention changes semantics when 'if' statements are usedKT-12646'Convert to block body' should use partial body resolveKT-12919Use simple class name in "Change function return type" quickfixKT-13151Incorrect warning "Make variable immutable"KT-13170"Declaration has platform type" inspection: by default should not be reported for platform type argumentsKT-13262"Wrap with safe let call" quickfix produces wrong result for qualified functionKT-13364Do not suggest creating annotations/enum classes for unresolved type parameter boundsKT-12627Allow warnings suppression for secondary constructorKT-13365Disable "Create property" (non-abstract) in interfaces. Make "Create function" (non-abstract) generate function body in interfacesKT-8903Remove Unused Receiver: update function/property usagesKT-11799Create from Usage: Make extension functions/properties 'private' by defaultKT-11795Create from Usage: Place extension properties after the usage and generate stub getterKT-12951Prohibit "Convert to expression body" when function body is 'if' without 'else' or 'when' is non-exhaustiveKT-13430"Add non-null asserted (!!) call" quickfix can't process unary operatorsKT-13336"Convert concatenation to template" intention appends literal to variable omitting bracesKT-13328Do not suggest "Replace infix with safe call" inside conditions or binary / unary expressionsKT-13452"Replace if expression with assignment" doesn't work for cascade if-else if-elseKT-13184"Different Kotlin Version" inspection: false positive caused by verbose plugin version nameKT-13480"Can be replaced with comparison" inspection: false positive if extension method called 'equals' is usedKT-13288"Unused property" inspection: false positive when extending abstract class and implementing interfaceKT-13432"Replace with safe call" quickfix does not work withcompareTo()usageKT-13444"Invert if" intention changes semantics for nested if with returnKT-13536Fix StackOverflowError from "Unused Symbol" inspection after importing enum's values()KT-12820Platform Type Inspection: !! quickfix shouldn't be available when any generic parameter has platform typeKT-9825Incorrect "unused variable" warning when used in finally blockKT-13715Prohibit applying "Change to star projection" to functional types
Refactorings
New features
KT-12017Inline Property: Support "Do not show this dialog" and "Inline this occurrence" options
Bugfixes
KT-11176Add a space before '{' in functions generated "Generate hashCode/equals/toString"KT-12294Introduce Property: Fix extraction of expressions referring to primary constructor parametersKT-12413Change Signature: Fix bogus warning about unresolved type parameters/invalid functional type replacementKT-12084Introduce Property: Do not skip outer classes if extractable expression is contained in object literalKT-13082Rename: Fix exception on property rename previewKT-13207Safe delete: Fix exception when removing any function in 2016.2KT-12945Rename: Fix function description in super method warning dialogKT-12922Introduce Variable: Do not suggest expressions without typeKT-12943Rename: Show function signatures in "Rename Overloads" dialogKT-13157Extract Function: Automatically quote function name if necessaryKT-13010Extract Function: Fix generation of destructuring declarationsKT-13128Introduce Variable: Retain entered name after changing "Specify type explicitly" optionKT-13054Introduce Variable: Skip leading/trailing comments inside selectionKT-13385Move: Quote package name (if necessary) when moving declarations to new fileKT-13395Introduce Property: Fix duplicate count in popup windowKT-13277Change Signature: Fix usage processing to prevent interfering with Python support pluginKT-13254Rename: Conflict detection for type parametersKT-13282,KT-13283Rename: Fix name quoting for automatic renamersKT-13239Rename: Warn about function name conflictsKT-13174Move: Warn about accessibility conflicts due to moving to unrelated moduleKT-13175Move: Warn about accessibility conflicts when moving entire fileKT-13240Rename: Do not report shadowing conflict if redeclaration is detectedKT-13253Rename: Report conflicts for constructor parametersKT-12971Push Down: Do not specifiy visibility on generated overriding membersKT-13124Pull Up: Skip super members without explicit declarationsKT-13032Rename: Support accessors with non-conventional namesKT-13463Rename: Quote parameter name when necessaryKT-13476Rename: Fix parameter rename when new name matches call selectorKT-9381Rename: Do not search for component convention usagesKT-13488Rename: Support rename of packages with non-standard quoted names
Debugger
New features
KT-7549Provide an option to use the Kotlin syntax when evaluating watches and expressions in Java files
Bugfixes
KT-13059Fix error stepping on Step Over action in the end of while blockKT-13037Fix possible deadlock in debugger in 2016.1 and exception in 2016.2KT-12651Fix exception in evaluate expression when bad identifier is used for marking objectKT-12896Fix "Step In" to inline functions for AndroidKT-13269Make quick evaluate work on receiver in qualified expressionsKT-12641Unknown error on evaluate expression containing inline functions with complicated environmentKT-13163Fix exception when evaluating expression: Access is allowed from event dispatch thread only.
JS
New features
KT-3008Option to generate require.js and AMD compatible modulesKT-5987Add ability to refer to classKT-4115Provide method to get Kotlin type name
Bugfixes
KT-8003Compiler exception on 'throw throw'KT-8318Wrong result for 'when' containing only 'else' blockKT-12157Compiler exception onwhencondition containingreturn,breakorcontinueKT-12275Fix code generation with inline function call in condition ofwhile/do..whileKT-13160Fix compiler exception when left-hand side of assignment is array access and right-hand side is inline functionKT-12864Make enums comparableKT-12865Implementing Comparable breaks inheritanceKT-12928Nested inline causes undefined reference accessKT-12929Code with callable reference crashed at runtime (in some JS VMs)KT-13043Invalid invocation generated for secondary constructor that calls constructor from base class with default parametersKT-13025'function?.invoke' does not work properly with extension functionsKT-12807Lambda was lost in generated codeKT-12808Compiler duplicates arguments and the body of lambda when lambda is in RHS of assignment operatorKT-12873Fix ReferenceError when class delegates to complex expressionKT-13658Wrong code when capturing object
Tools
Gradle
- Gradle versions < 2.0 are not supported
KT-13234Setting kotlinOptions.destination and kotlinOptions.classpath is deprecatedKT-9392Kotlin classes are missing after converting Java class to KotlinKT-12736Kotlin classes are deleted when generated Java source is changedKT-12658Build fails after android resources are editedKT-12750Non clean compilation fails with gradle 2.14KT-12912New class from subproject is unresolved with subsequent build with Gradle DaemonKT-12962Incremental compilation: Track changes in generated filesKT-12923Incremental compilation: Compile error when code using internal class is modifiedKT-13528Incremental compilation: support multi-project incremental compilationKT-13732Android Build folder littered withcopyFlavourTypeXXX
KAPT
New features
KT-13499Implement Annotation Processing API (JSR 269) natively in Kotlin
Bugfixes
KT-12776Android build fails with KAPT and generateStubs depending on library module namesKT-13179Java is recompiled every time with Gradle 2.14 and KAPTKT-12303,KT-12113Do not pass non-relevant annotations to processors
REPL
KT-12389REPL just quits when toString() of user class throws an exception
CLI & Ant
KT-13237Include kotlin-reflect.jar to classpath by default, add '-no-reflect' key to suppress this behavior
CLI
KT-13491Support '-no-reflect' in 'kotlin' command
Maven
KT-13211Provide 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
openandoverrideis no longer a warning KT-4829Equal conditions inwhenis now a warningKT-6611"This cast can never succeed" warning is no longer reported forFoo<T> as Foo<Any>KT-7174Declaring members with the same signature as non-overridable methods from Java classes (like Object.wait/notify) is now an error (when targeting JVM)KT-12302abstractmodifier for a member of interface is no longer a warningKT-12452openmodifier for a member of interface without implementation is now a warningKT-11111Overriding by inline function is now a warning, overriding by a function with reified type parameter is an errorKT-12337Reference to a property with invisible setter now has KProperty type (as opposed to KMutableProperty)
Issues fixed
KT-4285No warning for a non-tail call when the method inherits default arguments from superclassKT-4764Spurious "Variable must be initialized" in try/catch/finallyKT-6665Unresolved reference leads to marking subsequent code unreachableKT-11750Exceptions when creating various entries with the name "name" in enumsKT-11998Smart cast to not-null is not performed on a boolean property inifconditionKT-10648Exhaustiveness check does not work when sealed class hierarchy contains intermediate sealed classesKT-10717Type inference for lambda with local returnKT-11266Fixed "Empty intersection of types" internal compiler error for some casesKT-11857Fix visibility check for dynamic members within protected method (when targeting JS)KT-12589Improved "infixmodifier is inapplicable" diagnostic messageKT-11679Erroneous call with argument causes Throwable at ResolvedCallImpl.getArgumentMapping()KT-12623Fix ISE on malformed code
JVM code generation
KT-5075Optimize array/collection indices usage inforloopKT-11116Optimize coercion to Unit, POP operations are backward-propagated
Issues fixed
KT-11499Compiler crashes with "Incompatible stack heights"KT-11943CompilationException with extension property of KClassKT-12125Wrong increment/decrement on Byte/Char/Short.MAX_VALUE/MIN_VALUEKT-12192Exhaustiveness check isn't generated for when expression returning UnitKT-12200Erroneously optimized away assignment to a property initialized to zeroKT-12582"VerifyError: Bad local variable type" caused by explicit loop variable typeKT-12708Bridge method not generated when data class implements interface with copy() methodKT-12106import 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-versioncommand line option - Maven:
languageVersionconfiguration parameter, linked withkotlin.compiler.languageVersionproperty - Gradle:
kotlinOptions.languageVersionproperty in task configuration
- CLI:
- Allow to specify which java runtime target version to generate bytecode for.
- CLI:
-jvm-targetcommand line option - Maven:
jvmTargetconfiguration parameter, linked withkotlin.compiler.jvmTargetproperty - Gradle:
kotlinOptions.jvmTargetproperty in task configuration
- CLI:
- Allow to specify path to JDK to resolve classes from.
- CLI:
-jdk-homecommand line option - Maven:
jdkHomeconfiguration parameter, linked withkotlin.compiler.jdkHomeproperty - Gradle:
kotlinOptions.jdkHomeproperty in task configuration
- CLI:
Standard Library
- Improve documentation (including
KT-11632) - List iteration used in collection operations is performed with an indexed loop when the list supports
RandomAccessand the operation isn't inlined
IDE
Completion
New features
- Smart completion after
byandin - Improved completion in bodies of overridden members (when no type is specified)
- Improved presentation of completion items for property accessors
- Fixed keyword completion after
tryin assignment expression KT-8527Include non-imported declarations on the first completionKT-12068Special completion item for "[]" get-operator accessKT-12080Parameter 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-9166Code completion does not work for synthetic java properties on typing "g"KT-11609No named arguments completion should be after dotKT-11633Wrong indentation after completing a statement in data classKT-11680Code completion of label for existing return with value inserts redundant whitespaceKT-11784Completion forifstatement should add parentheses automaticallyKT-11890Completion for callable references does not propose static Java membersKT-11912String interpolation is not converted to ${} form when accessing this.propertyKT-11957Nocatchandfinallykeywords in completionKT-12103Smart completion for nested SAM-adapter produces short unresolved nameKT-12138Do not show "::error" in smart completion when any function type accepting one argument is expectedKT-12150Smart completion suggests to compare non-nullable with nullKT-12124No code completion for a java property in a specific positionKT-12299Completion: incorrect priority of property foo over method getFoo in Kotlin-only codeKT-12328Qualified function name inserted when typing beforeifKT-12427Completion doesn't work for "@receiver:" annotation targetKT-12447Don't use CompletionProgressIndicator in Kotlin pluginKT-12669Completion should show variant with()when there is default lambdaKT-12369Pressing dot after class name should not cause insertion of constructor call
Spring support
New features
KT-11692Support Spring model diagrams for Kotlin classesKT-12079Support "Autowired members defined in invalid Spring bean" inspection on Kotlin declarationsKT-12092Implement bean references in @Qualifier annotationsKT-12135Automatically configure components based onbasePackageClassesattribute of @ComponentScanKT-12136Implement package references inside of string literalsKT-12139Support Spring configurations linked via @Import annotationKT-12278Implement Spring @Autowired inspectionKT-12465Implement Spring @ComponentScan inspection
Issues fixed
KT-12091Fixed unstable behavior of Spring line markersKT-12096Fixed rename of custom-named beans specified with Kotlin annotationKT-12117Group Kotlin classes from the same file in the Choose Bean dialogKT-12120Show autowiring candidates line markers for @Autowired-annotated constructors and constructor parametersKT-12122Fixed line marker popup on functions with @Qualifier-annotated parametersKT-12143Fixed "Spring Facet Code Configuration (Kotlin)" inspection descriptionKT-12147Fixed exception on analyzing object declaration with @Component annotationKT-12148Warn about object declarations annotated with Spring@Configuration/@Component/etc.KT-12363Fixed "Autowired members defined in invalid Spring bean (Kotlin)" inspection descriptionKT-12366Fixed exception on analyzing class declaration upon annotation typingKT-12384Fixed 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-8477New inspection "Can be primary constructor property" with quick-fixKT-5010"Redundant semicolon" inspection with quickfixKT-9757Quickfix for "Unused lambda expression" warningKT-10844Quick fix to add crossinline modifierKT-11090"Add variance modifiers to type parameters" inspectionKT-11255Move Element Left/Right actionsKT-11450"Modality is redundant" inspectionKT-11523"Add @JvmOverloads annotation" intentionKT-11768"Introduce local variable" intentionKT-11806Quick-fix to increase visibility for invisible memberKT-11807Use function body template when generating overriding functions with default bodyKT-11864Suggest "Create function/secondary constructor" quick fix on argument type mismatchKT-11876Quickfix for "Extension function type is not allowed as supertype" errorKT-11920"Increase visibility" and "Decrease visibility" quickfixes for exposed visibility errorsKT-12089Quickfix "Make primary constructor parameter a property"KT-12121"AddtoString()call" quickfixKT-11104New quickfixes for nullability problems: "Surround with null check" and "Wrap with safe let call"KT-12310New 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-3797Quickfix to make a function abstract should not be offered for object membersKT-11866Suggest "Create secondary constructor" when constructors exist but are not applicableKT-11482Fixed exception in "Move to companion object" intentionKT-11483Pass implicit receiver as argument when moving member function to companion objectKT-11512Allow choosing any source root in "Move file to directory" intentionKT-10950Keep original file package name when moving top-level declarations to separate file (provided it's not ambiguous)KT-10174Optimize imports after applying "Move declaration to separate file" intentionKT-11764Intention "Replace with aforEachfunction call should replacecontinuewithreturn@forEachKT-11724False suggestion to replace with compound assignmentKT-11805Invert if-condition intention breaks code in case of end of line commentKT-11811"Make protected" intention for a val declared in parameters of constructorKT-11710"Replaceifwith elvis operator": incorrect code generated forifexpressionKT-11849Replace explicit parameter withitchanges the meaning of code because of the shadowingKT-11870"Replace with Elvis" refactoring doesn't change the variable type from T? to TKT-12069Specify language for all Kotlin code inspectionsKT-11366"objectCompanionis never used" warning in intellijKT-11275Inconsistent behaviour of "move lambda argument out of parentheses" intention action when using lambda calls with function arguments without parenthesesKT-11594"Add non-null asserted (!!) call" applied to unsafe cast to nullable type causes AE at KtPsiFactory.createExpression()KT-11982False "Redundant final modifier" reportedKT-12040"Replace when with if" produce invalid code for first entry which has commentKT-12204"Use classpath of module" option in existing Kotlin run configuration may be changed when a new run configuration is createdKT-10635Don't mark private writeObject and readObject methods of Serializable classes as unusedKT-11466"Make abstract" quick fix applies to outer class of object with accidentally abstract functionKT-11120Constructor parameter/field reported as unused symbol even if it haveusedannotationKT-11974Invert if-condition intention loses commentsKT-10812Globally unused constructors are not marked as suchKT-11320Don't mark @BeforeClass (JUnit4) annotated functions as unusedKT-12267"Change type" quick fix converts to Int for Long literalKT-11949Various problems fixed with "Constructor parameter is never used as a property" inspectionKT-11716"Simplyforusing destructuring declaration" intention: incorrect behavior for data classesKT-12145"Simplifyforusing destructuring declaration" should work even when no variables declared inside loopKT-11933Entities used only by alias are marked as unusedKT-12193Convert to block body isn't equivalent for when expressions returning UnitKT-10779Simplifyforusing destructing declaration: intention / inspection quick fix is available only when all variables are usedKT-11281Fix exception on applying "Convert to class" intention to Java interface with Kotlin inheritor(s)KT-12285Fix exception on test class generationKT-12502Convert to expression body should be forbidden for non-exhaustive when returning UnitKT-12260ISE while replacing an operator with safe callKT-12649"Convert if to when" intention incorrectly deletes codeKT-12671"Shot type" action: "Type is unknown" error on an invoked expressionKT-12284Too wide applicability range for "Add braces to else" intentionKT-11975"Invert if-condition" intention does not simplifyisexpressionKT-12437"Replace explicit parameter" intention is suggested for parameter of inner lambda in presence ofitfrom outer lambdaKT-12290Navigate to the generated declaration when using "Implement abstract member" intentionKT-12376Don't show "Package directive doesn't match file location" in injected codeKT-12777Fix 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-2428Support basic use-cases of language injection for expressions marked with @Language annotationKT-11574Support predefined Java positions for language injectionKT-11472Add comment or @Language annotation after "Inject language or reference" intention automatically
Refactorings
New features
KT-6372Add name suggestions to Rename dialogKT-7851Respect naming conventions in automatic variable renameKT-8044,KT-9432Support @JvmName annotation in rename refactoringKT-8512Support "Rename tests" options in Rename dialogKT-9168Support rename of synthetic propertiesKT-10578Support automatic test renaming for facade filesKT-12657Rename implicit usages of annotation methodvalueKT-12759Suggest renaming both property accessors with matching @JvmName when renaming one of them from Java
Issues fixed
KT-4791Rename overridden property and all its accessors on attempt to rename overriding accessor in Java codeKT-6363Do not rename ambiguous references in import directivesKT-6663Fixed rename of ambiguous import reference to class/function when some referenced declarations are not changedKT-8510Preserve "Search in comments and strings" and "Search for text occurrences" settings in Rename dialogKT-8541,KT-8786Do now show 'Rename overloads' options if target function has no overloadsKT-8544Show more detailed description in Rename dialogKT-8562Show conflicts dialog on attempt of redeclarationKT-8611Qualify class references to resolve rename conflicts when possibleKT-8732Implement Rename conflict analysis and fixes for properties/parametersKT-8860Allow renaming class by constructor delegation call referencing primary constructorKT-8892Suggest renaming base declarations on overriding members in object literalsKT-9156Quote non-identifier names in Kotlin referencesKT-9157Fixed in-place rename of Kotlin expression referring Java declarationKT-9241Do not replace Java references to synthetic component functions when renaming constructor parameterKT-9435Process property accessor usages (Java) in comments and string literalsKT-9444Rename dialog: Allow typing any identifier without backquotesKT-9446Copy default parameter values to overriding function which is renamed while its base function is notKT-9649Constraint search scope of parameter declared in a private memberKT-10033Qualify references to members of enum companions in case of conflict with enum entriesKT-10713Skip read-only declarations when renaming parametersKT-10687Qualify property references to avoid shadowing by parametersKT-11903Update references to facade class when renaming file via matching top-level classKT-12411Fix package name quotation in Move refactoringKT-12543Qualify property references withthisto avoid renaming conflictsKT-12732Copy default parameter values to overriding function which is renamed by Java reference while its base function is unchangedKT-12747Fix exception on file copy
Java to Kotlin converter
New features
KT-4727Convert Java code copied from browser or other sources
Issues fixed
KT-11952Assertion failed in PropertyDetectionCache.get on conversion of access to Java constant of anonymous typeKT-12046Recursive property setterKT-12039Static imports converted missing ".Companion"KT-12054Wrong conversion ofinstanceofchecks with raw typesKT-12045ConvertObject()toAny()
Android Lint
Issues fixed
KT-12015False positive for Bundle.getInt()KT-12023"minSdk" lint check doesn't work foras/isKT-12674"Calling new methods on older versions" errors for inlined constantsKT-12681Running lint from main menu: diagnostics reported for java source files onlyKT-12173False positive for "Toast created but not shown" inside SAM adapterKT-12895NoSuchMethodError 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-9933Indentation in code fragments is not preservedKT-10998Spaces around links are missing in return blockKT-11791Markdown links renderingKT-12001Allow use of@paramto 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-11643Inspections and intentions to fix erroneously configured Maven pom fileKT-11701"Add Maven Dependency quick fix" in Kotlin source filesKT-11743Intention to replace kotlin-test with kotlin-test-junit
Issues fixed
KT-9492Configuring multiple Maven ModulesKT-11642Kotlin Maven configurator tags orderKT-11436"Choose Configurator" control opens dialogs with inconsistent modality (linux)KT-11731Default maven integration doesn't include documentationKT-12568Execution configuration: file path completion works only in some sub-elements ofKT-12558Configure Kotlin in Project: "Undo" should revert changes in all pomsKT-12512"Different IDE and Maven plugin version" inspection is being invoked for non-tracked pom.xml files
Debugger
New features
KT-11438Support 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-12067Deadlock in Kotlin debugger is fixedKT-12232No code completion in Evaluate Expression and Throwable at CodeCompletionHandlerBase.invokeCompletion()KT-12137Evaluate expression: code completion/intention actions allows to use symbols from modules that are not referencedKT-12206NoSuchFieldError in Evaluate Expression on a property of a derived classKT-12678NoSuchFieldError in Evaluate Expression on accessing delegated property defined in other moduleKT-12773Fix debugging for Kotlin JS projects
Formatter
Issues fixed
KT-12035Spaces aroundasKT-12018Spaces between function name and arguments in infix callsKT-11961Spaces before angle bracket in method definitionKT-12175Don't enforce empty line between secondary constructors without bodyKT-12548Spaces aroundiskeywordKT-12446Spaces before class type parametersKT-12634Spaces between method name and parenthesis in method callKT-10680Spaces aroundinkeywordKT-12791Spaces between curly brace and expression inside string templateKT-12781Spaces between annotation and expressionKT-12689Spaces around semicolonsKT-12714Spaces 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-2919Constructor calls are no longer highlighted as classesKT-6540Infix function calls are now highlighted as regular function callsKT-9410Annotations in Kotlin are now highlighted with the same color as in Java by defaultKT-11465Type parameters in Kotlin are now highlighted with the same color as in Java by defaultKT-11657Allow viewing decompiled Java source code for Kotlin-compiled classesKT-11704Support file path references inside of Kotlin string literalsKT-12076Kotlin Plugin update check: always display installed version numberKT-11814New icon for kotlin annotation classesKT-12735Convert JavaDoc to KDoc when overriding Java class member in Kotlin
Issues fixed
KT-5960Can't find usages for Java methods used from Kotlin by call conventionKT-8362"New Kotlin file": Keywords should be escaped in package nameKT-8682Respect "Copy JavaDoc" option in the "Override/Implement Members..." dialogKT-8817Fixed rename of Java getters/setters through synthetic property references in KotlinKT-9399Find Usages omits Kotlin annotation parameter usage in Java sourceKT-9797"Kotlin Bytecode" toolwindow breaks after closingKT-11145Use progress indicator when searching usages in Introduce ParameterKT-11155Allow running multiple Kotlin classes as well as running mixtures of Kotlin and Java classesKT-11495Show recursion line markers for extension function calls with different receiverKT-11659Generate abstract overrides for Any members inside of Kotlin interfacesKT-12070Add empty line in error message of Maven and Gradle configurationKT-11908Allow properties with custom setters to be used in generated equals/hashCode/toStringKT-11617Fixed title of Introduce Parameter declaration chooserKT-11817Fixed rename of Kotlin enum constants through Java referencesKT-11816Fixed usages search for Safe Delete on simple enum entriesKT-11282Delete interface reference from super-type list when applying Safe Delete to Java interfaceKT-11967Fix Find Usages/Rename for parameter references in XML filesKT-10770"Optimize imports" will not keep import if a type is only referenced by kdocKT-11955Copy/Paste inserts fully qualified name when copying function with overloadsKT-12436"Replace explicit parameter with it": java.lang.Exception at BaseRefactoringProcessor.run()KT-12440Removing unused parameter results in Exception "Refactorings should not be started inside write action"KT-12006getLanguageLevel is slow for Kotlin light classesKT-12026"Constant expression required" in Java for const Kotlin valuesKT-12259ClassCastException in light classes while trying to create generic propertyKT-12289Remove unnecessary?fromserrlive templateKT-12110Map help button of the Compiler - Kotlin pageKT-12075Kotlin Plugin update check: make dumbawareKT-10255call BuildManager.clearState(project) in apply() method of Kotlin Compiler Settings configurableKT-11841New Project / Module wizard, Gradle: pure Kotlin module is created withoutrepositoriescall in build.gradleKT-11095Java cannot infer generic return type of Kotlin function (with java 8 language level)KT-12090Intellij/Kotlin plugin does not handle generic return type of static method defined in Kotlin, called from JavaKT-12206Fix NoSuchFieldError on accessing base property without backing field in evaluate expressionKT-12516File Structure: Kotlin annotation classes have Java annotation iconsKT-11328"New Kotlin class": generates packages when fully qualified name is specifiedKT-11778Exception in Lombok plugin: Rewrite at slice FUNCTIONKT-11708"Go to declaration" doesn't work on a call to function with SAM conversion on a derived typeKT-12381Prefer not-nullable return type when overriding Java method without nullability annotationKT-12647Performance improvement for test-related line markersKT-12526Kotlin intentions increase PSI modification counts from isAvailable, even in daemon threads
Reflection
Issues fixed
KT-11531Optimize "KCallable.name"KT-10771Reflection on Function objects does not support lambdas with generic return typeKT-11824Reflection inconsistency between member property and accessor
JS
- Improve performance of maps and sets
Issues fixed
KT-6942Generate structural equality check (i.e.Any.equals) instead of referential check (===) value equality patterns inwhenKT-7228Wrong AbstractList signatureKT-8299Wrong access to private member in autogenerated code in data classKT-11346Reified functions likefilterIsInstanceare now available in JS Standard LibraryKT-12305Incorrect translation ofvarargin@nativefunctionsKT-12254JsEmptyExpression in initializer when compiling code likeval x = throw Exception()KT-11960Wrong code generated when a method of a local class calls constructor of the classKT-10931Incorrect inlining of library method with optional parametersKT-12417Wrong check cast generated for KMutableProperty
Tools
New features
KT-11839Maven 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-12595JPS: Fixed com.intellij.util.io.MappingFailedException: Cannot map bufferKT-11166Gradle: Unable to access internal classes from test code within the same moduleKT-12352KAPT: Fix "Classpath entry points to a non-existent location" warningsKT-12074Building Kotlin maven projects using a parent pom will silently failKT-11770Warning "RuntimeException: Could not find installation home path" when using Gradle Incremental CompilationKT-10969Android extensions: NullPointerException when finding view in FragmentKT-11885Gradle/Android: Unresolved reference "kotlinx" when classpath dependency is defined in root build.gradleKT-12786Deprecation warning with Gradle 2.14
1.0.2-1
- KT-12159, KT-12406, KT-12431, KT-12478 Support Android Studio 2.2
- KT-11770 Fix warning "RuntimeException: Could not find installation home path" when using incremental compilation in Gradle
- KT-12436, KT-12440 Fix multiple exceptions during refactorings in IDEA 2016.2 EAP
- KT-12015, KT-12047, KT-12387 Fix multiple issues in Kotlin Lint checks
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
equalscompared 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
valin 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
getis an operator butsetis 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
whenover 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
todoandcurrentStackTrace@InlineOnlynot to lose stack trace - KT-11745 Rename parameters of
String.subSequenceto match those ofCharSequence.subSequence - KT-10953 Clarify parameter order of lambda function parameter of
*Indexedfunctions - KT-10198 Improve docs for
binarySearchfunctions - 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.javaFieldon a subclass - KT-10690 Support
javaMethodandkotlinFunctionfor 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
invokeon objects and companion objects - KT-11823 Fix capturing of outer class'
thisin 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
@AutowiredDependency..." action - KT-11652 Rename bean attributes mentioned in Spring XML config together with corresponding Kotlin declarations
- KT-11098 Inspection on final classes/functions annotated with Spring
- Enable precise incremental compilation by default in non-Maven/Gradle projects
- KT-11612 Highlight named arguments
- KT-7715 Highlight
vars that can be replaced byvals - KT-5208 Intention action to convert string to raw string and back
- KT-11078 Quick fix to remove
.javawhen 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
arrayOfwrapper for annotation parameters - KT-10476 Quick fix for converting primitive types
- KT-10859 Quick fix to make
varwith 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()andkotlinFunctionName()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
@NotNullparameter - KT-11018 Fix
vars shown in Ctrl + Mouse Hover asvals - 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
isbranches 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_builtinsfiles) - 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
whenwithif": do not lose comments - KT-10797 "Replace with operator" intention is not available anymore for non-
operatorfunctions - 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
whileloop 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
toArraycalls for JavaCollection#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