Commit Graph

9059 Commits

Author SHA1 Message Date
Yaroslav Chernyshev 6e9739caec Add regression test for MPP android source set with resources 2021-06-16 09:32:45 +03:00
Ilya Kirillov 39e2df6916 FIR IDE: render unresolved types as qualifiers for member generator 2021-06-16 01:17:44 +03:00
Tianyu Geng f6078b24df FIR IDE: AddToString quickfix 2021-06-15 20:19:53 +02:00
Tianyu Geng 4bedf41f9c FIR IDE: RemoveNulalbleFix quickfix 2021-06-15 20:19:52 +02:00
Ilya Kirillov 7d7782e8ff Fix FE1.0 intention test 2021-06-12 23:53:46 +03:00
Mark Punzalan 9b5f754e75 FIR IDE: Enable add accessors quickfix for MUST_BE_INITIALIZED.
Also added diagnosticFixFactoriesFromIntentionActions() to share
quickfix-creation across multiple diagnostics with the same PSI.
2021-06-12 23:53:44 +03:00
Mark Punzalan cd6dbd2515 FIR IDE: Assert that the action to invoke in
AbstractHighLevelQuickFixTest is of type QuickFixActionBase.
2021-06-12 23:53:43 +03:00
Mark Punzalan 91e62832ee FIR IDE: Add applicability range to HLAddAccessorIntention (copied from
FE 1.0's logic) and actually check the range in AbstractHLIntention.
2021-06-12 23:53:40 +03:00
Mark Punzalan a497dd1d31 FIR IDE: Enable add accessor intentions in plugin. 2021-06-12 23:53:39 +03:00
Ilya Kirillov c4b1fa8ec0 Fix FE1.0 plugin testdata after adding // IGNORE_FIR directive 2021-06-10 19:05:33 +02:00
Tianyu Geng 90a0c9bb25 FIR IDE: quickfix to add override keyword
Also enables more tests that covers previous quickfixes
2021-06-10 19:05:33 +02:00
Tianyu Geng ce767046eb FIR checkers: report SMARTCAST_IMPOSSIBLE 2021-06-10 16:01:13 +03:00
Mark Punzalan befa8aaac7 FIR IDE: Enable add initializer quickfix for MUST_BE_INITIALIZED. 2021-06-09 22:49:56 +03:00
Mark Punzalan 2773506f4c FIR IDE: Don't offer AddExclExclCallFix when expression is definitely
null.
2021-06-09 22:49:52 +03:00
Mark Punzalan c6427d57f1 FIR IDE: Enable AddExclExclCallFix for ASSIGNMENT_TYPE_MISMATCH and
INITIALIZER_TYPE_MISMATCH.
2021-06-09 22:49:50 +03:00
Nikolay Krasko a4005cef19 Build: Drop ultimate, cidr and kmm from the build (KTI-563) 2021-06-09 17:43:52 +03:00
Aleksei.Cherepanov 35c067b215 Fix import for JPS build of Kotlin repo
Changed link of configuration on TC for getting artifacts
from "Compiler Dist (202) and Maven Artifacts"
to "Kotlin / Kotlin Public / Aggregate"
2021-06-08 22:01:31 +03:00
Mikhail Glukhikh 0a670bf055 Report EXPERIMENTAL_API diagnostics on various implicit usages
#KT-32443 Fixed
#KT-22852 Fixed
2021-06-08 11:37:28 +03:00
Denis.Zharkov 0aca3a3737 FIR: Adjust test data after introduction of INFERENCE_NO_INFORMATION_FOR_PARAMETER
See previous commits for details
2021-06-07 15:25:47 +03:00
Ivan Kochurkin c4c2fbb5a0 [FIR] Implement RECURSIVE_TYPEALIAS_EXPANSION, CYCLIC_INHERITANCE_HIERARCHY diagnostics, fix stackoverlow exception in case if typealias points to type with type arguments 2021-06-03 20:41:58 +03:00
Mark Punzalan d1531f9cdd FIR: Choose a resolved candidate for augmented assignment when both
assign and operator candidates are unsuccessful.
2021-06-03 20:18:04 +03:00
Mark Punzalan 32bb64a225 FIR: Report UNSAFE_OPERATOR_CALL for augmented assignments (was
reporting UNSAFE_CALL).
2021-06-03 20:18:03 +03:00
Mark Punzalan ef923d4cfe FIR IDE: Enable ReplaceInfixOrOperatorCallFix for
UNSAFE_IMPLICIT_INVOKE_CALL.
2021-06-03 20:18:02 +03:00
Mark Punzalan 6de1000818 FIR: Report UNSAFE_INFIX_CALL for all infix-style calls, even if the
candidate is not an infix function.

This mirrors FE 1.0 (see
`AbstractTracingStrategy.reportUnsafeCallOnBinaryExpression()`) and
allows consistent handling for quickfixes on infix calls.
2021-06-03 20:18:01 +03:00
Mark Punzalan ca7649edbb FIR IDE: Enable ReplaceInfixOrOperatorCallFix for UNSAFE_CALL,
UNSAFE_INFIX_CALL, UNSAFE_OPERATOR_CALL.
2021-06-03 20:17:59 +03:00
Mark Punzalan 5a7f4ffc99 FIR IDE: Enable tests for ReplaceInfixOrOperatorCallFix. 2021-06-03 20:17:58 +03:00
Mark Punzalan afeeec3091 IDE: Move ReplaceInfixOrOperatorCallFix to idea-frontend-independent. 2021-06-03 20:17:57 +03:00
Mark Punzalan 5a6d543fba IDE: Don't do any resolution in ReplaceInfixOrOperatorCallFix.invoke(). 2021-06-03 20:17:56 +03:00
Ilya Kirillov edbfff71e9 FIR IDE: fix shortenings for enums 2021-06-03 19:39:05 +03:00
Ilya Kirillov b81ef157b2 FIR IDE: fix reference resolve in import statement 2021-06-03 19:38:45 +03:00
Ilya Kirillov df93dc91d1 FIR IDE: fix package reference resolve 2021-06-03 19:38:31 +03:00
Alexander Dudinsky a51c65ed60 Update test data for MultiModuleHighlightingTest.testLanguageVersionsViaFacets
Add `Resolved to error element` markers
2021-06-03 16:42:24 +03:00
Dmitriy Novozhilov 796f8e6bce Revert "FIR checkers: report SMARTCAST_IMPOSSIBLE"
This reverts commit 84334b08
2021-06-03 09:48:50 +03:00
Tianyu Geng 84334b087c FIR checkers: report SMARTCAST_IMPOSSIBLE 2021-06-02 13:19:12 +03:00
Mark Punzalan af35892007 FIR IDE: Enable RemoveUselessIsCheckFix and
RemoveUselessIsCheckFixForWhen.
2021-05-28 18:21:32 +03:00
Mark Punzalan 639b7537da FIR IDE: Enable RemoveUselessCastFix. 2021-05-28 18:21:31 +03:00
Pavel Kirpichenkov f5a53c82c5 Don't write type arguments of types replaced with Any to metadata
Anonymous types are not approximated by frontend for private declarations.
Class IDs for such types are replaced by StringTable before being written
to metadata. JVM string table mangles such types and keeps them generic
for reflection. For other purposes the types are replaced with `Any`.
Type arguments of the replaced type should be ignored in the latter case.
Otherwise decompiled text builder crashes on an attempt to restore `Any`
type with non-zero number of type arguments.

The code pretending to replace a type with its first supertype was dropped
from ApproximatingStringTable for two reasons:
- the first type from `getAllSuperClassifiers` is the original type itself
which doens't provide a ClassId for anonymous type, so it was a noop
- tracking potential type arguments of the first anonymous type's supertype
would be a complication with almost no practical value (types in decompiled
text would be slightly closer to the real type of a private declaration).

^KT-46393 Fixed
2021-05-28 14:42:47 +00:00
Mark Punzalan d12a24418e FIR IDE: Remove multiple nested params in RemoveUselessElvisFix and
RemoveUselessCastFix.
2021-05-27 19:32:03 +03:00
Mark Punzalan a778cc673e FIR IDE: Enable RemoveUselessElvisFix. 2021-05-27 19:32:01 +03:00
Ilya Kirillov b18d4af37b fix fe1.0 plugin testdata 2021-05-25 20:39:37 +03:00
Mark Punzalan 2c18406632 IDE: Add test for message of VAL_OR_VAR_ON_*_PARAMETER diagnostic.
Also fall back to getting parameter descriptor if property descriptor
not found for `val/var` parameters.

^KTIJ-13030 Fixed
2021-05-25 20:39:36 +03:00
Tianyu Geng 71c5c9f6c5 FIR IDE: add quickfix to change function return type 2021-05-25 20:39:32 +03:00
Denis.Zharkov 2ecba6ac39 Remove WITH_NEW_INFERENCE directive from all tests
This directive anyway does not make test run twice with OI, and with NI
It only once run the test with specific settings (// LANGUAGE)
and ignores irrelevant (OI or NI tags)
2021-05-25 13:28:26 +03:00
Denis.Zharkov d4586cefb4 FIR: Properly deserialize upper bounds of classes type parameters
^KT-46661 Fixed
2021-05-25 13:28:25 +03:00
Ilya Kirillov c72b2caf3e Fix wrapWithSafeLetCall quickfix testdata 2021-05-21 00:01:20 +02:00
Tianyu Geng e1b542314a FIR IDE: quickfix for WrapWithSafeLetCall
There is some behavior change regarding the new WrapWithSafeLetCall quickfix

1. it now works correctly on binary expressions by wrapping it with `()`
2. it now looks for a nullable position upward and do the modification there,
   if possible. For example, consider the following code

   ```
   fun bar(s: String): String = s

   fun test(s: String?) {
     bar(bar(bar(<caret>s)))
   }
   ```

   After applying this fix, FE1.0 yields

   ```
   bar(bar(s?.let { bar(it) }))
   ```

   while the new implementation yields

   ```
   s?.let { bar(bar(bar(it))) }
   ```

   This behavior aligns with FE1.0 if `bar` accepts nullable values.
2021-05-20 20:33:00 +02:00
Mark Punzalan d2b8204fdc FIR/FIR IDE: Use entire FirVariableAssignment when reporting UNSAFE_CALL
(e.g., `nullable.a = b`), and use positioning strategies to locate the
dot in the LHS expression.

Without it, only the callee reference is reported on, which makes the
highlighting of the error and application of quickfixes incorrect in the
IDE.

Also fixed issue with annotated and/or labeled expressions on LHS of
assignment (e.g., `(@Ann label@ i) = 34`).
2021-05-20 20:32:58 +02:00
Mark Punzalan 1d9247ae0f FIR IDE: Offer AddExclExclCallFix for nullable types with an
`iterator()` function that does NOT have `operator` modifier.

This is different from FE1.0. Adding `!!` will then surface the error
that `operator` modifier needs to be added (with corresponding fix).
2021-05-20 20:32:58 +02:00
Mark Punzalan 9e01a608b2 FIR IDE: Add ability in test infra to have a "before" file different in
FIR vs FE1.0, and made file naming convention more consistent.
2021-05-20 20:32:57 +02:00
Mark Punzalan efa3bf9c69 FIR IDE: Consolidate tests for AddExclExclFix in one directory.
I found these tests only _after_ the previous changes, so I needed to
merge and/or remove redundant tests.
2021-05-20 20:32:57 +02:00