5034 Commits

Author SHA1 Message Date
Dmitriy Novozhilov 1b27d60307 [FIR] Support @OnlyInputTypes annotation
^KT-54807 Fixed
2022-11-22 15:46:17 +00:00
pyos 5cc08fb314 FIR DFA: check for reassignments of LHS when handling ?..
`x?.y != null` does not imply that `x != null` if e.g. an argument to
`y` has reassigned `x` in the meantime.

The same is true for `x == y` and `functionWithContract(x, y)`, but
those are somewhat harder to implement since there is no easy way to
find the last node of a certain argument.

^KT-55096
2022-11-22 15:44:38 +00:00
pyos 564eca58dd FIR DFA: don't update receivers' types if flow is unchanged 2022-11-22 15:44:36 +00:00
pyos ae31275f73 FIR DFA: unwrap transparent expressions in more places 2022-11-22 15:44:35 +00:00
pyos 5796f0eb07 FIR DFA: clean up LogicSystem API
Receivers have nothing to do with it.
2022-11-22 15:44:33 +00:00
Egor Kulikov 067036c162 RawFirBuilder refactoring
Second step for KT-52615
Get rid of PsiHandlingMode
Get rid of source in FirLazyBlock
Refactor lazy creation

Merge-request: KT-MR-7753
Merged-by: Egor Kulikov <Egor.Kulikov@jetbrains.com>
2022-11-22 14:43:53 +00:00
Anna Kozlova 1906a41d9a fix testdata after merge 2022-11-22 13:31:41 +01:00
Marco Pennekamp 93f560eb4d [Analysis API] Add call resolution tests for KTIJ-23373
- The Java functions aren't recognized as candidates during the test
  (`FULL_JDK` isn't helping), so I've replicated the tests with local
  extension functions and confirmed that they uncover the same
  exception.
2022-11-22 13:13:35 +01:00
Marco Pennekamp 60dbe73f60 [Analysis API] Create substitutor from type arguments defensively
- Call candidate collection sometimes provides candidate symbols to
  `createConeSubstitutorFromTypeArguments` with fewer type parameters
  than type arguments provided by `FirQualifiedAccess`, which lead to
  an NPE. Because call candidates collected for the purposes of the
  Analysis API are best-effort guesses, we can ignore the additional
  type arguments.

^KTIJ-23373 fixed
^KTIJ-21506 fixed
2022-11-22 13:13:35 +01:00
Nikolay Lunyak c5469d5fb5 [FIR] KT-53988: Report ILLEGAL_SELECTOR for constants as selectors
Merge-request: KT-MR-7756
Merged-by: Nikolay Lunyak <Nikolay.Lunyak@jetbrains.com>

^KT-53988 Fixed
2022-11-22 10:54:09 +00:00
Anna Kozlova 702d0b4d54 [compiler] missed type parameters in local properties (KTIJ-23583)
even though local variables won't contain type parameters,
let's build fir for them
2022-11-22 10:47:45 +00:00
Anna Kozlova 3fdd0aacd3 [compiler] preserve fir receiver in tree
when selector is invalid expression,
ensure that fir tree still contains receiver as well as selector

KTIJ-23578
2022-11-22 10:46:59 +00:00
Jaebaek Seo c55efe62a3 [AA] handles FIR isUsedAsExpression for return within function block
For the following example:

```
fun foo(bar: Int) {
  <expr>if (bar == 4) return "Four"
  else return "Int"</expr>
}
```

AA FE1.0 `isUsedAsExpression` returns `false`.
Since the current AA FIR `isUsedAsExpression` returns `true` for the
above example, this commit fixes it.
2022-11-21 18:26:41 +01:00
Ilya Kirillov b6481ed891 [FIR] do not use FirValueParameter for function type parameter
As it is a different abstraction, introduced FirFunctionTypeParameter instead

Also, fix syntax checkers for function type parameter

^KT-55035 fixed
2022-11-21 16:17:51 +00:00
Jinseong Jeon f2bc25c71d SLC: fix visibility/static modifer of property in companion 2022-11-21 15:55:13 +01:00
Jinseong Jeon e2901c81ac SLC: populate fields from companion in annotation 2022-11-21 15:55:12 +01:00
Nikolay Lunyak fb09f139dd [FIR] Unmute receiver annotations tests
These tests were muted in 89f8821d. Seems they began to work after the
introduction of `FirReceiverParameter` in KT-54417.
2022-11-21 08:51:43 +00:00
Anna Kozlova e5ce32feeb [ANALYSIS API] introduce dedicated KtCall for incomplete code
KTIJ-23505 and duplicates
2022-11-18 20:59:31 +01:00
Egor Kulikov 877e11419e Stub updates for RawFirBuilder
First step for KT-52615
2022-11-18 11:40:09 +01:00
Mikhail Glukhikh 82f1535007 K1: fix IIOBE in expect-actual checker with different type parameter number
#KT-54827 Fixed
2022-11-17 22:28:04 +00:00
Marco Pennekamp c5e5140c08 [Analysis API] Fix exceptions around type parameters being treated as callables
- `toResolvedCallableSymbol`: cast defensively because
  the resolved symbol might not be a callable symbol.
- `toKtCallInfo`: Check that the resolved symbol is actually callable.

^KTIJ-23003 fixed
2022-11-17 18:58:38 +00:00
vladislav.grechko 36b8ba8df3 Improve support of custom equals in inline classes
- Ensure that typed equals parameter's type is a star projection of
  corresponding inline class

- Make possible to declare typed equals that returns 'Nothing'

- Forbid type parameters in typed equals operator declaration

^KT-54909 fixed
^KT-54910 fixed
2022-11-17 15:35:14 +01:00
Nikita Bobko f05fe1d46d Drop outdated KDoc and fix findSourceFirDeclarationByExpression signature
Review: https://jetbrains.team/p/kt/reviews/7690

Make findSourceFirDeclarationByExpression signature more specific.
`KtDeclaration` is an inheritor of `KtExpression`

`KtLambdaExpression` was changed to `KtFunctionLiteral` in
c24ad0ba51. I run analysis-api-fir tests
and ensured that `KtFunctionLiteral` appears in runtime instead of
`KtFunctionLiteral`

So `ktDeclaration` should be either `KtDeclaration` or
`KtFunctionLiteral`. But we don't need a KDoc for that because
`KtFunctionLiteral` is an inheritor of `KtDeclaration`, so type-system
already checks this invariant
2022-11-17 13:19:45 +01:00
Jinseong Jeon 6caf384bad AA FIR: handle Java annotation vararg values 2022-11-17 12:58:14 +01:00
Dmitrii Gridin a0f4c674f5 [AA] KtCallableReceiverRenderer: add annotations renderer
^KT-54417
2022-11-17 09:50:19 +00:00
Dmitrii Gridin b672949820 [AA] replace KtCallableReceiverTypeRenderer with KtCallableReceiverRenderer
^KT-54417
2022-11-17 09:50:18 +00:00
Dmitrii Gridin 032026278c fix compilation and testData after rebase
^KT-54417
2022-11-17 09:50:17 +00:00
Dmitrii Gridin 86422d0944 [FIR] FirReceiverParameter: rename type to typeRef
^KT-54417
2022-11-17 09:50:17 +00:00
Dmitrii Gridin a5d56e1877 [FIR] DebugSymbolRenderer: fix typo
^KT-54417
2022-11-17 09:50:14 +00:00
Dmitrii Gridin d0cc88ffe0 [AA] KtCallableSymbol: introduce receiverType extension
^KT-54417
2022-11-17 09:50:12 +00:00
Dmitrii Gridin 1ebfbc0ee9 [AA] KtCallableSymbol: rename receiver to receiverParameter
^KT-54417
2022-11-17 09:50:12 +00:00
Dmitrii Gridin 2741052db3 [AA] integrate KtReceiverParameterSymbol to KtCallableSymbol
^KT-54417
2022-11-17 09:50:10 +00:00
Dmitrii Gridin b333a214ca [AA K1] KtFe10PsiAnonymousFunctionSymbol: fix receiver
^KT-54417
2022-11-17 09:50:10 +00:00
Dmitrii Gridin 37d688ae83 [AA] introduce FirReceiverParameter
^KT-54417
2022-11-17 09:50:09 +00:00
Dmitrii Gridin be7d282974 [FIR] introduce FirReceiverParameter
^KT-54417
2022-11-17 09:50:09 +00:00
Anna Kozlova c727dbb8ca [fir compiler] ensure type parameters are included in the resolve scope
to resolve the next parameter bounds (KTIJ-23674)
2022-11-16 22:25:02 +00:00
Ilya Kirillov 8dab560d6e [LL FIR] fix status resolution of static enum members
Before, BODY_RESOLVE phase were used for them but status may be unresolved.
This caused CCE on accessing resolved status for such static enum members.

Now, those declarations are created with the status of owning enum as the status is taken from that class.
2022-11-16 19:44:18 +00:00
Jinseong Jeon fcba1f215a AA: handle erroneous type in nested type argument 2022-11-16 14:13:43 +01:00
Mikhail Glukhikh ac514849f4 K1: add deprecation for implicit non-public calls #KT-54762 Fixed 2022-11-16 12:27:12 +00:00
Dmitrii Gridin 36f9a8b7b8 [AA] fix symbol pointer for setter
^KT-54311
2022-11-15 21:37:27 +00:00
Yan Zhulanow e21226d02a [SLC] Ignore callables with invalid or absent names (KTIJ-23584) 2022-11-15 16:13:59 +00:00
Yan Zhulanow 6fe989b4b4 [LC] Provide proper parent element for private properties (KTIJ-23449)
Before, no parent element was returned for an object literal inside a
private property initializer, as only the getter was considered as a
potential parent.

Relevant tests are added on the IDE side (see 'LightClassBehaviorTest').
2022-11-15 16:13:59 +00:00
Jaebaek Seo 1a5a6474d6 Support TargetPlatform.isJs() for FIR 2022-11-15 16:50:17 +01:00
Jaebaek Seo f8a101cf3a Add KtType.isArrayOrPrimitiveArray/isNestedArray() to AA 2022-11-15 16:50:17 +01:00
Denis.Zharkov 2953e600ff K1: Deprecate incorrect callable references resolution behavior
^KT-54316 Related
^KT-54832 Fixed
2022-11-15 15:06:58 +00:00
Nikolay Lunyak 267ce1d892 [FIR] KT-54220: Don't crash on unsigned integers when no stdlib present
^KT-54220 Fixed
2022-11-15 09:02:33 +02:00
Nikolay Lunyak b03e14f565 [FIR] Get rid of field duplication in body resolve transformers 2022-11-14 22:40:41 +02:00
Nikolay Lunyak e34dd49872 [FIR] Get rid of the argumentMapping function.
It's just a duplicate of `resolvedArgumentMapping`. Plus there is a
member with the same name inside `FirAnnotationCall`.
2022-11-14 22:40:41 +02:00
Nikolay Lunyak 89f8821d0a [FIR] KT-53371, KT-53519: Fix annotations arguments mapping
See: compiler/testData/asJava/lightClasses/
AnnotatedParameterInInnerClassConstructor.kt

The muted tests don't work with the (KT-53371, KT-53519)-related
changes. During this test happens an attempt to access unresolved
annotations via CustomAnnotationTypeAttribute.
Discussion: KTIJ-23547
2022-11-14 22:40:41 +02:00
Nikolay Lunyak 6653f654ec [FIR] Add the missing transformPropertyAccessor override
Otherwise, `transformPropertyAccessor` from
`FirDeclarationsResolveTransformerForArgumentAnnotations` is
never called

See:
- compiler/testData/asJava/ultraLightFacades/properties.kt
- analysis/analysis-api/testData/symbols/symbolByPsi/
  contextReceivers/contextReceiversOnProperty.kt
2022-11-14 16:55:08 +02:00