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
6b343515e1
[Test] Save IR bytecode dumps from BytecodeListingHandler to .ir.txt file instead of _ir.txt
...
This is needed to keep consistency with other dumps and to allow
test helper plugin to recognize those dumps
2022-12-01 07:29:37 +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
Dmitriy Novozhilov
dff5799c58
[Test] Don't create separate .fir.txt file in BytecodeListingHandler if not necessary
2022-12-01 07:29:35 +00:00
Pavel Mikhailovskii
f96d41e414
KT-4107 Don't generate readResolve for data objects
2022-11-30 21:07:20 +00:00
Evgeniy.Zhelenskiy
fa4a4e56f3
[Tests] Remove unnecessary usages of OPTIONAL_JVM_INLINE_ANNOTATION
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:42 +00:00
Evgeniy.Zhelenskiy
50310d42e3
[IR] MFVC lateinit variables and properties test
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:42 +00:00
Evgeniy.Zhelenskiy
b7f249cdb6
[IR] Fix bugs in MFVC function references support
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:41 +00:00
Evgeniy.Zhelenskiy
86809e898a
[IR] Combine value class lowerings
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:41 +00:00
Evgeniy.Zhelenskiy
68fb8aa2a1
[IR] Replace indexes with names for mfvc methods and fields
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:41 +00:00
Evgeniy.Zhelenskiy
b692748938
[IR] Always add getter methods to value classes even if not used
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:40 +00:00
Evgeniy.Zhelenskiy
3653c86f08
[IR] Rename static replacement of MFVC typed equals to "equals-impl0"
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:40 +00:00
Evgeniy.Zhelenskiy
38c80192f9
[IR] Support MFVC-typed properties and interfaces delegates
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:40 +00:00
Evgeniy.Zhelenskiy
4d426fc4cd
[IR] Generate not FIR_IDENTICAL box fir value classes tests
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:39 +00:00
Evgeniy.Zhelenskiy
fa4ceb4ef4
[IR] Add diagnostics to forbid annotations for MFVC-typed elements
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:39 +00:00
Evgeniy.Zhelenskiy
adee33d3e5
[IR] Forbid MFVC primary constructors default arguments
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:38 +00:00
Evgeniy.Zhelenskiy
c6e54e6433
[IR] Support object-like interaction with MFVC function references
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:37 +00:00
Evgeniy.Zhelenskiy
1660dc21b9
[IR] Refactor optimization of eliminating removing extra boxes
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:37 +00:00
Evgeniy.Zhelenskiy
f2d98eac5e
[IR] Make use a temp variable for flattened non-local non-MFVC getters
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:37 +00:00
Evgeniy.Zhelenskiy
9f01ccc304
[IR] Support user-defined equals for MFVC
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:36 +00:00
Evgeniy.Zhelenskiy
51f9f31a0a
[IR] Remove suffix from MFVC specialized equals function
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:36 +00:00
Evgeniy.Zhelenskiy
6107caa8e2
[FE1.0, FIR] Support secondary constructors for Value Classes
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:35 +00:00
Evgeniy.Zhelenskiy
8c3fa6f09f
[IR] Escape removing extra boxes if no box was are in the function
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:35 +00:00
Evgeniy.Zhelenskiy
962265531e
[IR] Weaken pressure on Local storage to fix performance issue
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:35 +00:00
Evgeniy.Zhelenskiy
89d5592622
[IR] Support function references
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:34 +00:00
Evgeniy.Zhelenskiy
b45f2baff5
[IR] Fix performance regression
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:34 +00:00
Evgeniy.Zhelenskiy
51e76aa19a
[IR] Support default arguments
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:33 +00:00
Evgeniy.Zhelenskiy
0c70b60988
[IR] Add context receiver test on MFVC
...
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com >
#KT-1179
2022-11-30 18:55:33 +00:00
Artem Kobzar
67048151fb
[K/JS] Change js-call inlining strategy and + ability to referencethis safely from the js call ^Fixed KT-54134
2022-11-30 11:43:22 +00:00
Sergey Bogolepov
0b2bc06870
Extract ErrorReportingContext from CommonBackendContext
2022-11-30 11:24:39 +00:00
Sergey Bogolepov
c22cad07ed
Introduce FlexiblePhaseConfig
...
For dynamic Kotlin/Native driver we need a PhaseConfigurationService
that does not force us to provide a list of phases upfront.
2022-11-30 11:24:38 +00:00
Sergey Bogolepov
cd3dece726
Introduce SimpleNamedCompilerPhase
...
Dynamic Kotlin/Native compiler driver relies on a more "pure"
approach when data is explicitly passed between different phases.
SameTypeNamedCompilerPhase is not suitable for this purpose, so we need
a new type for that.
2022-11-30 11:24:38 +00:00
Yan Zhulanow
10fc86ef92
[FE] Add tests for 'containingClassForStaticMemberAttr'
2022-11-30 04:12:28 +00:00
Yan Zhulanow
4489ccf864
Simplify registering new debug diagnostics in FirDiagnosticsHandler
2022-11-30 04:12:27 +00:00
Yan Zhulanow
c7f9d7f027
[FE] Pass the derived class tag to more places (KTIJ-22808)
2022-11-30 04:12:27 +00:00
Yan Zhulanow
0e050ae7f1
[FE] Consider derived class tag on caching substitution scopes
2022-11-30 04:12:27 +00:00
Yan Zhulanow
fe69b21aed
[FE] Fix 'containingClassForStaticMemberAttr' for fake overrides (KTIJ-22808)
2022-11-30 04:12:26 +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 Kirillov
bba5b87733
Fix binary compatibility with org.jetbrains.kotlin.descriptors.explicitParameters
2022-11-29 21:52:56 +00:00
Jinseong Jeon
8eccb552a3
Migrate descriptor-related util from IR to FE1.0
...
so that FE1.0 UAST can avoid depending on backend IR
^KTIJ-23602
2022-11-29 21:52:55 +00:00
Vladimir Dolzhenko
f54e7abe1d
Reduce memory footprint
...
#KTIJ-23785
2022-11-29 21:01:43 +00:00
Marco Pennekamp
d4e6a4ad54
[FIR] KT-54978 Prohibit explicit type arguments in property accesses
...
- Add a checker which ensures that property accesses have no explicit
type arguments. If an error on the property access's callee reference
already exists, the new error is not reported in favor of the existing
error, as the property access may have been intended to be a function
call.
- `complicatedLTGT.fir.kt`: The underlying parser issue is not yet
solved, which is why `x` is parsed as a property access with explicit
type arguments.
- `reservedExpressionSyntax` tests: This new check makes a lot of the
access expressions in these tests illegal, so valid lines have been
added and invalid lines appropriately marked with
`EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS` errors.
^KT-54978 fixed
2022-11-29 14:47:59 +00:00
Dmitrii Gridin
37729c0353
[SLC] migrate SymbolLightParameterForReceiver to KtReceiverParameterSymbol
...
^KT-54051
2022-11-29 13:33:43 +00:00
Dmitrii Gridin
a7fae5fd99
[SLC] SymbolLightClassForEnumEntry: improve implementation
...
^KT-54051
^KT-50241
2022-11-29 13:33:35 +00:00
Dmitrii Gridin
a539203e73
[SLC] drop KtAnalysisSession from SymbolLightClassBase
...
^KT-54051
2022-11-29 13:33:33 +00:00
Dmitriy Novozhilov
46928eaa0b
[FIR] Unconditionally enable BooleanElvisBoundSmartCasts feature in K2
...
^KT-54694 Fixed
^KT-26357
2022-11-29 12:25:45 +00:00
Dmitriy Novozhilov
ac7fddaad5
[FE] Always infer upper types to intersection types in K2...
...
...and always use old algorithm for K1
^KT-51221
2022-11-29 12:25:44 +00:00
Sergej Jaskiewicz
d50c072af0
[klib] Validate paths when unpacking zip archives
2022-11-29 12:21:04 +00:00