Commit Graph

1221 Commits

Author SHA1 Message Date
Ilya Kirillov b962fcddc8 [FIR] move file annotations to the FirFileAnnotationsContainer 2022-12-09 16:21:07 +00:00
Ilya Kirillov 67adc3fb1a [FIR] introduce FirFileAnnotationsContainer 2022-12-09 16:21:07 +00:00
Ilya Kirillov 8fd892176a [FIR] introduce FirElementWithResolvePhase class and make it a base class for FirDeclaration 2022-12-09 16:21:06 +00:00
Egor Kulikov dbfe33c00d [FIR] Make default values for value parameters lazy in RawFirBuilder
Sixth step for ^KT-52615

Merge-request: KT-MR-7926
Merged-by: Egor Kulikov <Egor.Kulikov@jetbrains.com>
2022-12-08 13:32:37 +00:00
pyos 39f88b9e87 FIR CFG: move the argument reordering hack to the expression transformer 2022-12-08 10:19:32 +00:00
Ilya Kirillov 9dd398dc77 [FIR] do not consider FirDefaultPropertyBackingField to be always resolved to BODY_RESOLVE
Otherwise, lazy resolve will never resolve it
2022-12-02 17:08:34 +00:00
Egor Kulikov fb2485f83c [FIR] Make constructor delegate lazy in RawFirBuilder
Fifth step for ^KT-52615

Merge-request: KT-MR-7860
Merged-by: Egor Kulikov <Egor.Kulikov@jetbrains.com>
2022-12-02 03:12:51 +00:00
Dmitriy Novozhilov 8d2701209e [FIR] Add documentation to AbstractPredicate and FirPredicateBasedProvider 2022-12-01 07:29:39 +00:00
Dmitriy Novozhilov 6864433581 [FIR] Support resolution of meta-annotations before supertypes
Now annotations are resolved with following algorithm:
1. On COMPILER_REQUIRED_ANNOTATIONS we resolve all annotations
     and store results if this is compiler annotation, plugin annotation,
     or annotation with meta-annotation (meta annotations are checked
     recursively with designated resolution if needed)
2. On TYPES stage we resolve all those annotations once again and if
     some annotation changes resolution then we keep type from p.1 and
     report error on this annotation, so user should disambiguate it

Ambiguity may occur because of nested annotations with same name as
  plugin annotations:

```
annotation class SomeAnnotation // (1) plugin annotation

open class Base {
    annotation class SomeAnnotation // (2)
}

class Derived : Base() {
    @SomeAnnotation // <-----------------
    class Inner
}
```
At COMPILER_REQUIRED_ANNOTATIONS annotation call will be resolved to (1)
  because at this stage supertypes are not resolved yet, and we consider
  only importing scopes. At the TYPES stage we will find correct
  annotation from supertype
2022-12-01 07:29:39 +00:00
Dmitriy Novozhilov aaf0a1f396 [FIR] Introduce shouldNotBeCalled utility function 2022-12-01 07:29:38 +00:00
Dmitriy Novozhilov 246dc985a6 [FIR] Rework predicates system
Now predicates are split into LookupPredicate and DeclarationPredicate
  hierarchies. First one allows to perform global search for declarations
  and second one allows to check if some declaration matches the predicate.
Predicates with meta annotations are excluded from LookupPredicates,
  because it's impossible to create index of annotations with meta-annotations,
  because they can be located inside binary dependencies (so to achieve
  this we need to scan the whole classpath).
Also only one predicate with meta-annotations is left in DeclarationPredicate
  hierarchy (AnnotatedWithMeta)

^KT-53874 Fixed
^KT-53590 Fixed
2022-12-01 07:29:37 +00:00
Nikolay Lunyak 2e9f9f987b [FIR] KT-44698: Print file:line:offset on K2 crash
^KT-44698 Fixed
2022-11-29 22:35:51 +00:00
Ilya Chernikov a3a1550933 K2 scripting: add initial scripting support to K2 frontend 2022-11-26 18:01:48 +00:00
Egor Kulikov d585f068dd [FIR] Make anonymous initializer lazy in RawFirBuilder
Fourth step for KT-52615

Merge-request: KT-MR-7798
Merged-by: Egor Kulikov <Egor.Kulikov@jetbrains.com>
2022-11-25 11:41:44 +00:00
Dmitrii Gridin 2155a23e4e [AA FIR] implement FirCallableSignature to simplify search by signature
^KT-54826 Fixed
2022-11-24 18:32:43 +00:00
Ilya Kirillov 7781ad67d4 [FIR] introduce FirValueParameter.containingFunctionSymbol
^KT-55034 fixed
2022-11-22 18:25:30 +01:00
Ilya Kirillov c8e3103af9 [FIR] do not create FirParameter for catch parameter
use FirProperty instead

^KT-55034
2022-11-22 18:25:30 +01: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 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
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
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
Dmitrii Gridin 86422d0944 [FIR] FirReceiverParameter: rename type to typeRef
^KT-54417
2022-11-17 09:50:17 +00:00
Dmitrii Gridin 40c64c672d [FIR] FirRenderer: render receiver annotation
^KT-54417
2022-11-17 09:50:16 +00:00
Dmitrii Gridin ef5a3303b2 [FIR] FirBasedSymbol: add internal annotation for internal things
^KT-54417
2022-11-17 09:50:15 +00:00
Dmitrii Gridin 3cd85a4622 [FIR] drop redundant receiver copy
^KT-54417
2022-11-17 09:50:15 +00:00
Dmitrii Gridin b40d329751 [FIR] FirAnnotationBuilder: drop redundant buildAnnotationCopy
^KT-54417
2022-11-17 09:50:13 +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
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
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 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
Anna Kozlova 9f470e2a4d [LL API] return FirErrorProperty for top level destructuring declaration
KTIJ-23552
2022-11-11 17:39:54 +01:00
Mikhail Glukhikh 4dc7b6dddc K2: fix/universalize logic to determine that member is from Java 2022-11-11 13:30:40 +00:00
Mikhail Glukhikh cb39221f85 FIR2IR: drop unused code with annotation placeholder 2022-11-11 13:30:37 +00:00
Mikhail Glukhikh cc1a094b6c K2: rename importedFromObject -> importedFromObjectOrStatic 2022-11-11 13:30:34 +00:00
Mikhail Glukhikh 53f37a3893 FIR: always use class-based dispatch receiver type in class member helpers 2022-11-11 13:30:33 +00:00
Mikhail Glukhikh d4fc2248ff FIR: make class member helper names more consistent 2022-11-11 13:30:32 +00:00
pyos e2a83a0ed0 FIR: unwrap intersection overrides when looking for owner class
But not substitution overrides! This is important if the method called
is an intersection override where one of the intersected types is a
subtype of a generic type.
2022-11-11 13:30:32 +00:00
Ilya Kirillov 068168bc3c [fir] change setter parameter name to value 2022-11-11 11:59:56 +01:00
Bogdan Mukvich fce8b877c8 Remove unused WriteCopyrightToFile gradle task
#KTI-758
2022-11-07 08:24:19 +00:00
Nikolay Lunyak c4fa1ed9d8 [FIR] Prevent StackOverflowError in FirTypeParameterSymbol 2022-10-20 13:08:11 +00:00
Dmitriy Novozhilov 8fbb605034 [FIR] Rename containingClass function to containingClassLookupTag
Since this function returns lookup tag instead of FirClass or symbol
  the old name may lead to misunderstanding
2022-10-19 11:09:34 +00:00
Dmitrii Gridin a0b814a1b6 [FIR] make FirPropertyAccessor#propertySymbol non-nullable
we need it to restore property accessor by property

^KT-54311
2022-10-17 14:59:42 +00:00
Mikhail Glukhikh 62ba1277bb K2: don't duplicate custom annotations in types #KT-54275 Fixed 2022-10-10 06:20:39 +00:00
Dmitriy Novozhilov ee21c966e1 [FIR] Get rid of all usages of safeAs in FIR modules 2022-10-06 06:57:06 +00:00
Ilya Kirillov 49f2f85927 [Low Level FIR] fix exception when creating symbol by invalid code 2022-10-04 12:56:07 +00:00
Dmitriy Novozhilov c0ad67c4f9 [FIR] Generate java declarations for record components of java records
^KT-53964 Fixed
2022-10-03 15:48:17 +03:00
Ilya Kirillov dd9ed02fbd [FIR] fix memory leak via static ConeIntegerLiteralTypeImpl.COMPARABLE_TAG 2022-10-02 20:38:34 +00:00
Mikhail Glukhikh 8281c166b1 K2 checkers: extract retrieveDirectOverriddenOf to FirTypeScope.kt 2022-09-29 08:34:11 +00:00