Commit Graph

18469 Commits

Author SHA1 Message Date
Yan Zhulanow f55a52b86e MPP: Fix compatibility issue with Android Studio 3.3 Canary 7
'TargetPlatformKind' is still used in AS 3.3 so we can't remove it entirely yet.
2018-09-06 14:42:19 +03:00
Alexey Sedunov b441c76313 Generate equals/hashCode(): Support content equality from stdlib
#KT-22361 Fixed
2018-09-06 14:28:53 +03:00
Alexey Sedunov 5fcc6cfa0b Change Signature: Retain necessary backquotes in the dialog
#KT-17124 Fixed
2018-09-06 14:28:52 +03:00
Alexey Sedunov 26c02cd8bb Move Left/Right: Support type constraints
#KT-26525 Fixed
2018-09-06 14:28:52 +03:00
Alexey Sedunov a20857beb9 Misc: Do not look for *_main/*_test modules in import test (AS3.2) 2018-09-06 14:28:52 +03:00
Mikhail Glukhikh 55ff519aa8 Fix KtModifierListOwner.addAnnotation (case without modifier list)
Now add annotation to primary constructor should work correctly,
and may be some other related cases too.

Related to KT-25548
2018-09-06 11:10:05 +03:00
Mikhail Glukhikh 5f2c7d3c84 Do not report OPTIONAL_DECLARATION_USAGE_... in IDE for platform modules
#KT-26585 Fixed
Also fixes MultiPlatformHighlightingTestGenerated.testMultifileFacade
2018-09-06 11:07:21 +03:00
Nikolay Krasko ca1e0a4b88 Do not fetch Kotlin stubs for versioned files from multi-release jars (KT-26439)
An incomplete list of inner class files might be stored in versioned
directory and that ruins Kotlin stub building.

Another reason for excluding such files, that they are duplicated
in different declarations lists such as `Navigate -> Class...` action.

 #KT-26439 Fixed
2018-09-06 10:48:18 +03:00
Mikhail Glukhikh ad27d9aae7 Package utils: implement getNonGeneratedKotlinSourceRoots
This is needed to prevent creation of actual elements
in generated sources. Checked manually.

#KT-24129 Fixed
2018-09-05 17:21:23 +03:00
Mikhail Glukhikh caee77cdae Kotlinize findOrCreateDirectoryForPackage in create actual fix
Before this commit, without existing directory
we tried to create it only inside Java source roots,
which is incorrect for JS and other non-JVM modules.
Source roots themselves still aren't created if they don't exist.

This fixes KT-19586 partially
2018-09-05 17:21:10 +03:00
Yan Zhulanow 17849473d6 Fix bunch compilation for AS 3.1/3.2 2018-09-05 17:15:04 +03:00
Mikhail Glukhikh 1530a8bf53 Downgrade "Call chain -> sequence" to information level
Made to hide problem KT-26571
2018-09-05 14:55:23 +03:00
Mikhail Glukhikh 56d89266d4 Add tests for KT-26141 (yet without changes) 2018-09-05 13:10:03 +03:00
Mikhail Glukhikh 68e3821ae2 Code cleanup: packageUtils.kt 2018-09-05 13:05:08 +03:00
Mikhail Glukhikh 53e7778078 Add modifiers on the same line even after annotation #KT-26492 Fixed 2018-09-05 13:05:08 +03:00
Mikhail Glukhikh 4dd95e5640 Introduce OptionalExpectationInspection
It works at INFORMATION level only and is intended to form quick-fixes
to add relevant actual declarations.

#KT-25533 Fixed
2018-09-05 13:05:07 +03:00
Mikhail Glukhikh ba84c6adf3 Request focus while navigating to expected declaration #KT-18490 Fixed 2018-09-05 13:05:07 +03:00
Mikhail Glukhikh df125702c1 Test for KT-25040 (just to stabilize behaviour) 2018-09-05 13:05:07 +03:00
Mikhail Glukhikh 69def648c9 Remove deprecated MP extensions from Gradle menu #KT-22491 Fixed
Related to KT-26414
2018-09-05 13:05:06 +03:00
Mikhail Glukhikh 62e1121e7f Remove deprecated MP project builder from Gradle menu #KT-26414 Fixed 2018-09-05 13:05:06 +03:00
Nicolay Mitropolsky d0575127be fix for StoredExceptionsThrowToggleAction nullability changed in 183 2018-09-05 09:42:59 +03:00
Alexey Sedunov 9d5bd29e8b Misc: Render MemberInfo as 'abstract' only if it's present in source
#KT-26533 Fixed
2018-09-04 19:49:14 +03:00
Toshiaki Kameyama be30761ec4 "Convert to 'also'" intention: Fix for call expression has this receiver #KT-26009 Fixed 2018-09-04 19:29:44 +03:00
Toshiaki Kameyama e1dd85429f Extract function: make default visibility private #KT-25454 Fixed 2018-09-04 19:28:25 +03:00
Toshiaki Kameyama dc57887a4d Create function quick fix: fix visibility from inline method #KT-25228 Fixed 2018-09-04 19:01:22 +03:00
Toshiaki Kameyama e2945b1d12 Add quickfix for "Interface doesn't have constructors" #KT-17687 Fixed 2018-09-04 18:58:56 +03:00
Toshiaki Kameyama b5ba475696 "Redundant lambda arrow" inspection: Also report arrow with single underscore parameter #KT-24728 Fixed 2018-09-04 18:29:46 +03:00
Toshiaki Kameyama 20535feb31 "Remove parameter" quick fix: Remove unused type parameter used as type projection #KT-23511 2018-09-04 18:29:13 +03:00
Alexander Podkhalyuzin c36d0e5db5 Changed action group text
#KT-26501 Fixed
2018-09-04 16:47:54 +03:00
Yan Zhulanow 7398a8149d Do not use ApplicationExtensionDescriptor in JPS (KT-26542)
The 'ExtensionPointName' class that ApplicationExtensionDescriptor uses is missing in the JPS classpath.
Now we don't use it unless the IDEA Application is properly initialized.
2018-09-04 14:54:45 +03:00
Nicolay Mitropolsky c13eac7507 183: AbstractHierarchyTest.doHierarchyTest signature update 2018-08-31 17:20:54 +03:00
Nicolay Mitropolsky d415ca9cf6 fixed nullability for various listeners update in 183 2018-08-31 17:20:54 +03:00
Yan Zhulanow 841bb4f253 Minor: Update DataFlowValueRenderingTestGenerated 2018-08-31 18:56:57 +05:00
Natalia Selezneva 3979ad7a1d Use correct classpath for Ide Scripting Console files during highlighting
KT-25606
2018-08-31 15:55:59 +03:00
Ilya Chernikov fd0eb6ee34 Implement support for class literals as annotation arguments...
on deserialization and reflection
2018-08-31 15:17:51 +03:00
Mikhail Glukhikh 68da28edb9 Fix some tests bound to changed annotation formatting 2018-08-31 15:03:25 +03:00
Toshiaki Kameyama 53c10238d6 Introduce inspection for safe cast + return #KT-26230 Fixed 2018-08-31 15:03:25 +03:00
Toshiaki Kameyama 2c71b3873e Introduce "flatMap { it } -> flatten" inspection #KT-25969 Fixed 2018-08-31 15:03:24 +03:00
Nicolay Mitropolsky d1667483a5 ModuleRootListener.rootsChanged parameter made non-null in 183 2018-08-31 13:20:00 +03:00
Sergey Rostov 437fc9d749 JPS: Refactor cache compatibility checking and build targets loading/dependency analysis.
CacheVersion class refactoring:

Responsibilities of class CacheVersion are splitted into:
	- interface CacheAttributesManager<Attrs>, that should:
	    - load actual cache attribute values from FS
	    - provide expected attribute values (that is required for current build)
	    - checks when the existed cache (with actual attributes) values is suitable for current build (expected atribute values)
	    - write new values to FS for next build
	- CacheAttributesDiff is created by calling CacheAttributesManager.loadDiff extension method. This is just pair of actual and expected cache attributes values, with reference to manager. Result of loadDiff can be saved.

CacheAttributesDiff are designed to be used as facade of attributes operations: CacheAttributesDiff.status are calculated based on actual and expected attribute values. Based on that status system may perform required actions (i.e. rebuild something, clearing caches, etc...).

Methods of CacheAttributesManager other then loadDiff should be used only through CacheAttributesDiff.
Build system should work in this order:
    - get implementation of CacheAttributesManager for particular compiler and cache
    - call loadDiff __once__ and save it result
    - perform actions based on `diff.status`
    - save new cache attribute values by calling `diff.saveExpectedIfNeeded()`

There are 2 implementation of CacheAttributesManager:
    - CacheVersionManager that simple checks cache version number.
    - CompositeLookupsCacheAttributesManager - manager for global lookups cache that may contain lookups for several compilers (jvm, js).

Gradle:

Usages of CacheVersion in gradle are kept as is. For compatibility this methods are added: CacheAttributesManager.saveIfNeeded, CacheAttributesManager.clean. This methods should not be used in new code.

JPS:

All JPS logic that was responsible for cache version checking completely rewritten.

To write proper implementation for version checking, this things also changed:
	- KotlinCompileContext introduced. This context lives between first calling build of kotlin target until build finish. As of now all kotlin targets are loaded on KotlinCompileContext initialization. This is required to collect kotlin target types used in this build (jvm/js). Also all build-wide logic are moved from KotlinBuilder to KotlinCompileContext. Chunk dependency calculation also moved to build start which improves performance for big projects #KT-26113
	- Kotlin bindings to JPS build targets also stored in KotlinCompileContext, and binding is fixed. Previously it is stored in local Context and reacreated for each chunk, now they stored in KotlinCompileContext which is binded by GlobalContextKey with this exception: source roots are calculated for each round, since temporary source roots with groovy stubs are created at build time and visible only in local compile context.
	- KotlinChunk introduced. All chunk-wide logic are moved from KotlinModuleBuildTarget (i.e compiler, language, cache version checking and dependent cache loading)
	- Fix legacy MPP common dependent modules

Cache version checking logic now works as following:
- At first chunk building all targets are loaded and used platforms are collected. Lookups cache manger is created based on this set. Actual cache attributes are loaded from FS. Based on CacheAttributesDiff.status this actions are performed: if cache is invalid all kotlin will be rebuilt. If cache is not required anymore it will be cleaned.
- Before build of each chunk local chunk cache attributes will be checked. If cache is invalid, chunk will be rebuilt. If cache is not required anymore it will be cleaned.

#KT-26113 Fixed
#KT-26072 Fixed
2018-08-31 11:13:18 +03:00
Yan Zhulanow d00f5b335a MPP: Refactoring, extract IDE platform kinds, allow to add custom platforms 2018-08-31 05:14:15 +05:00
Pavel V. Talanov 3a8499b10e Fix a bug where kotlin common classes were seen as missing dependencies
When kotlin referred to them through java signatures
Java resolver ignores expect classes

 #KT-24185 Fixed
2018-08-30 19:37:02 +02:00
Pavel V. Talanov 7087a1b3f5 MPP: test different jvm implementations for single common module
Add test infrastructure to support same platform implementations
2018-08-30 19:37:02 +02:00
Mikhail Glukhikh 2849919094 Fix starImport quick-fix test 2018-08-30 18:30:50 +03:00
Mikhail Glukhikh ea74b37b5b Insert new line between annotation and type alias or sec. constructor
#KT-26377 Fixed
2018-08-30 18:30:47 +03:00
Toshiaki Kameyama bae754a266 Foldable if-then: do not highlight for is checks #KT-24978 Fixed 2018-08-30 18:30:45 +03:00
Toshiaki Kameyama fba539debf "Nested lambda has shadowed implicit parameter": minor improvements 2018-08-30 17:37:36 +03:00
Toshiaki Kameyama b7c4248524 "Nested lambda has shadowed implicit parameter": add quickfix to rename shadowing 'it' 2018-08-30 17:37:36 +03:00
Toshiaki Kameyama 97150cb0e2 "Nested lambda has shadowed implicit parameter": show warning on the shadowing 'it' reference 2018-08-30 17:37:36 +03:00
Toshiaki Kameyama 7fdbcda91d "Nested lambda has shadowed implicit parameter": downgraded to WEAK WARNING level 2018-08-30 17:37:36 +03:00