Tianyu Geng
7bb81ef157
FIR: add equality call checker
...
Added checker for FirEqualityOperatorCall. It's surfaced as one of the
following diagnostics depending on the PSI structure and types under
comparison:
* INCOMPATIBLE_TYPES(_WARNING)
* EQUALITY_NOT_APPLICABLE(_WARNING)
* INCOMPATIBLE_ENUM_COMPARISON_ERROR
Comparing with FE1.0, the current implementation is more conservative
and only highlights error if the types are known to follow certain
contracts with `equals` method. Otherwise, the checker reports warnings
instead.
However, the current checker is more strict in the following situations:
1. it now rejects incompatible enum types like `Enum<E1>` and
`Enum<E2>`, which was previously accepted
2. it now rejects incompatible class types like `Class<String>` and
`Class<Int>`, which was previously accepted
3. the check now takes smart cast into consideration, so
`if (x is String) x == 3` is now rejected
2021-05-06 17:50:32 +03:00
Jinseong Jeon
e2dc21da90
FIR checker: warn useless as and is
2021-05-05 18:20:51 +03:00
Ilya Kirillov
09a94f3200
FIR IDE: ignore non-passing tests in compiler based tests
2021-05-04 08:19:49 +02:00
Mikhail Glukhikh
80a449862e
FIR: implement diagnostics for qualifier as stand-alone expression case
2021-04-30 17:59:45 +03:00
Mikhail Glukhikh
84ccf7bbb1
FIR: use Java 8 rules in not implemented checker
2021-04-30 17:59:38 +03:00
Jinseong Jeon
9b39a8abc2
FIR: avoid wrapping an erroneous type as FirResolvedTypeRef
...
Instead, use FirErrorTypeRef, a subtype of FirResolvedTypeRef
2021-04-29 22:31:38 +03:00
Mark Punzalan
1835185b16
FIR: Remove duplicated diagnostics on annotations on types.
2021-04-26 15:11:43 +03:00
Mark Punzalan
9cf5ac1fbd
FIR: Render "?" on nullable function types.
2021-04-26 15:11:37 +03:00
Mikhail Glukhikh
f278de8768
FIR: don't call toString() inside string concatenations
2021-04-26 12:50:55 +03:00
Mikhail Glukhikh
5c224ad17c
FIR: fix positioning in fun interface checker
2021-04-23 17:29:34 +03:00
Артём
393a19db54
FIR: introduce FunInterfaceDeclarationChecker
2021-04-23 17:29:25 +03:00
Jinseong Jeon
24d792fb49
FIR checker: warn useless elvis
2021-04-22 13:10:54 +03:00
pyos
e6d923f65c
FIR: rename HIDDEN to INVISIBLE_REFERENCE
...
Some of them should be INVISIBLE_MEMBER though
2021-04-21 16:18:21 +03:00
Julia
387dafb8c5
[FIR] Introduce AnnotationUsedAsAnnotationArgumentChecker
2021-04-21 13:22:07 +03:00
Andrey Zinovyev
b9ae22207e
[FIR] Fix tests data for diagnostic tests
...
For tests failed after light tree changes
2021-04-20 18:13:03 +03:00
yantimirov-timur
1dfc3c0520
FIR: add getter visibility and setter return type checks
2021-04-19 19:21:09 +03:00
Tianyu Geng
6a03f31e50
FIR: add UnsafeCall resolution diagnostics
...
Previously unsafe call is reported as part of InapplicableWrongReceiver.
This makes it difficult for the downstream checkers to report different
diagnostics.
2021-04-19 15:11:13 +03:00
Mikhail Glukhikh
43a2ad0467
FIR: don't flatten for loop blocks in raw FIR builder
2021-04-19 15:11:12 +03:00
Ivan Kochurkin
4353365968
[FIR] Implement NULL_FOR_NONNULL_TYPE diagnostics, fix tests
2021-04-19 12:46:08 +03:00
Dmitriy Novozhilov
91fedd6a12
[FIR] Substitute types from arguments in evaluating of contract
...
#KT-41078
2021-04-16 17:23:22 +03:00
Dmitriy Novozhilov
e869f8091a
[FIR] Properly handle callable references which were resolved with error
2021-04-16 11:12:55 +03:00
Ilya Kirillov
0cf00d0f72
FIR: fix FirDefaultPropertyAccessor phase to BODY_RESOLVE
2021-04-15 15:23:56 +03:00
Ilya Kirillov
39b2cd1027
FIR: do not provide symbols with different ClassId in JavaSymbolProvider
...
JavaSymbolProvider uses KotlinPsiElementFinderWrapper for finding classes.
CliFinder looks for Java classing assuming that class with ClassId=a/b/C
lives in directory a/b and do not look into real package name of Java class.
This causes that we may find some classes which we should not see from current scope.
Also, the IDE implementation works correctly here (it also checks file package)
which cause different behaviour of FIR IDE and FIR
This change also requires to fix testdata and make Java classes live
in directory consistent with file package
2021-04-15 15:23:53 +03:00
Mikhail Glukhikh
4c13fe5631
FIR: handle SAM constructor properly in visibility checker
...
#KT-46074 Fixed
2021-04-14 20:50:54 +03:00
ebukreev
d8a2f82cbd
FIR: inroduce FirFunInterfaceConstructorReferenceChecker
2021-04-14 19:53:43 +03:00
Dmitriy Novozhilov
1f0ecade34
[FIR] Transform annotations of type refs in body resolve stage
...
Also fix building CFG for annotation calls
2021-04-14 18:30:56 +03:00
Andrey Zinovyev
2b8c22c08a
[FIR] Add CYCLIC_GENERIC_UPPER_BOUND check
2021-04-14 18:11:14 +03:00
zadorotskas
334d0a8b5a
FIR: introduce three diagnostics for const val
2021-04-13 21:36:46 +03:00
Mikhail Glukhikh
78fc87ffb1
FIR: apply minor test data fixes around type mismatch problems
2021-04-13 21:36:41 +03:00
Mikhail Glukhikh
69d1ef423a
FIR initializer: don't report type mismatch on incompatible extensions
...
This commit suppresses type mismatch error from KT-45989
2021-04-13 21:36:36 +03:00
vldf
57d2eb5da2
Introduce FirFunctionReturnTypeMismatchChecker
2021-04-13 21:36:33 +03:00
vldf
24f1f1221e
Introduce FirInitializerTypeMismatchChecker
2021-04-13 21:36:31 +03:00
Ilya Chernikov
dfd5e80ce9
FIR: Get rid of CompositeTransformResult
2021-04-13 16:18:39 +02:00
Ivan Kochurkin
fb06da2d75
[FIR] Implement WRONG_LONG_SUFFIX diagnostics, fix tests
2021-04-13 16:22:03 +03:00
Jinseong Jeon
619360fe4d
FIR checker: report UNINITIALIZED_ENUM_(ENTRY|COMPANION)
2021-04-13 08:25:16 +03:00
Ivan Kochurkin
ad9b962536
[FIR] Fix tests (ARGUMENT_TYPE_MISMATCH instead of INCOMPATIBLE_CANDIDATE)
2021-04-12 23:49:55 +03:00
Ivan Kochurkin
4ffab5fe5a
[FIR] Add new test argParamTypeMismatch.kt for ARGUMENT_TYPE_MISMATCH diagnostics
2021-04-12 23:49:54 +03:00
Jinseong Jeon
9af108df77
FIR LT: set source for destructured value parameter of lambda
2021-04-12 19:20:03 +03:00
Andrey Zinovyev
47407c4445
[FIR] Add NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER check
2021-04-11 16:18:07 +00:00
Mikhail Glukhikh
818c54e3a6
FIR: report ABSTRACT_*_NOT_IMPLEMENTED on appropriate intersections
2021-04-09 14:52:34 +03:00
Jinseong Jeon
5a0b75bd89
FIR checker: warn unnecessary safe calls
2021-04-09 12:32:45 +03:00
Jinseong Jeon
2ecb6733ed
FIR checker: warn unnecessary non-null assertions
2021-04-09 12:32:45 +03:00
Mikhail Glukhikh
5229d4e4f4
Apply bad LT test changes related to COMPONENT_FUNCTION_..._MISMATCH
2021-04-09 12:32:44 +03:00
Jinseong Jeon
87c50235ed
FIR checker: report COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH
2021-04-09 12:32:44 +03:00
Andrey Zinovyev
37055c5a09
[FIR] Add REPEATED_BOUND, CONFLICTING_UPPER_BOUNDS diagnostics
2021-04-09 07:38:39 +00:00
pyos
1b1949d242
FIR: generate destructurings for more than one parameter
2021-04-08 09:41:23 +03:00
Ivan Kochurkin
404c69ded7
[FIR] Implement INCORRECT_CHARACTER_LITERAL, EMPTY_CHARACTER_LITERAL, TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL, ILLEGAL_ESCAPE, ILLEGAL_ESCAPE_SEQUENCE diagnostics, fix tests
2021-04-06 20:44:32 +03:00
Dmitriy Novozhilov
3cb17ac2f0
[FIR] Implement FirReturnAllowedChecker
...
Supported diagnostics:
- RETURN_NOT_ALLOWED
- RETURN_IN_FUNCTION_WITH_EXPRESSION_BODY
2021-04-06 12:30:41 +03:00
Dmitriy Novozhilov
5ebd24eac5
[FIR] Save inline status of lambda after resolution
2021-04-06 12:30:34 +03:00
yantimirov-timur
9e7f6332d1
[FIR] Complete WRONG_SETTER_TYPE_PARAMETER checker
2021-04-05 16:17:34 +03:00