Commit Graph

42608 Commits

Author SHA1 Message Date
Dmitrii Gridin 6c24436657 [SLC] make INSTANCE field for object public
^KT-56441 Fixed
2023-02-06 17:48:37 +00:00
Dmitrii Gridin 8e815e943e [SLC] add tests on private object
^KT-56441
2023-02-06 17:48:37 +00:00
Dmitrii Gridin fa231f60ae [LC] rename testData for objects
^KT-56441
2023-02-06 17:48:37 +00:00
Dmitrii Gridin bd7e5fd324 [LC] update testData for objects
^KTIJ-24119
2023-02-06 17:48:36 +00:00
Vladimir Sukharev e75d739c7a Add tests for property const initializers
Merge-request: KT-MR-8661
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-02-06 15:43:41 +00:00
Oleksandr Karpovich dec9704cea Add more methods to DescriptorSerializerPlugin
New methods:
afterFunction, afterConstructor, afterProperty, afterTypealias
2023-02-06 11:15:53 +00:00
aleksandrina-streltsova 7db32f6430 [FIR] Fix unexpected primary constructor scope in secondary constructor
^KTIJ-23720
^KT-56353 Fixed
2023-02-06 10:30:28 +00:00
Dmitriy Novozhilov c25a5bc9c1 [FIR] Cleanup storing context for lambdas during body resolution 2023-02-06 10:08:37 +00:00
Dmitriy Novozhilov 791a7b1c31 [FIR] Extract function type kind for lambda in argument position
^KT-56381 Fixed
2023-02-06 10:08:37 +00:00
Dmitriy Novozhilov e36d3c94a5 [FIR] Add containingFunctionSymbol property to FirValueParameterSymbol 2023-02-06 10:08:36 +00:00
Dmitriy Novozhilov f479a56f5e [FIR] Fix reporting of CANNOT_INFER_PARAMETER_TYPE on lambda parameters
^KT-56138 Fixed
2023-02-06 08:09:57 +00:00
Dmitriy Novozhilov 76d360d793 [FIR] Properly set source for inferred return type of function 2023-02-06 08:09:56 +00:00
Dmitriy Novozhilov e9204521a9 [FIR] Properly create type ref for error type in various places 2023-02-06 08:09:56 +00:00
Dmitriy Novozhilov ad3ae0ff69 [FIR] Add ability to specify that diagnostic collector should visit nodes with specific fake kind 2023-02-06 08:09:55 +00:00
Anna Kozlova f784628ebf [CLI] reduce memory usage for compiler settings
make write protection directly in properties
it creates no additional wrapper with the link to the containing class
for ij project, this reduces memory usage for ~15 mb

^KT-56351
2023-02-06 07:57:53 +00:00
Vladimir Sukharev 441c74e2c8 Unmute test, fixed by KT-55462
Merge-request: KT-MR-8640
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-02-05 16:37:13 +00:00
Dmitrii Gridin 0608e44b17 [SLC] drop redundant testData
after 6fd79f4e2e

^KTIJ-24067
2023-02-03 19:49:16 +00:00
Dmitrii Gridin fb8e4e7c8d [FIR] FirBasedSymbol: add more info to kdoc
^KT-56046
2023-02-03 19:49:16 +00:00
Dmitrii Gridin 2c96933f5c [FIR] FirBasedSymbol: drop unused functions
^KT-56046
2023-02-03 19:49:15 +00:00
Dmitrii Gridin cc7527a5bc [FIR] CompilerRequiredAnnotationsHelper: update kdoc and drop commented values
^KT-56046
2023-02-03 19:49:15 +00:00
Dmitrii Gridin 38575cdbc1 [FIR] FirBasedSymbol: iterate annotations by index instead of iterator to avoid possible ConcurrentModificationException
^KT-56046
2023-02-03 19:49:05 +00:00
Dmitrii Gridin 09637a47d3 [SLC] update testData for 1.9 language
^KT-56046
2023-02-03 19:49:05 +00:00
Dmitrii Gridin 3b9318bd3a [SLC] LazyAnnotationsBox: drop redundant synchronization
We can use less strict rule for produced annotations:
* Previously: the same annotations from `findAnnotation` and `annotations`
have the same identity
* Now: the same annotations from `findAnnotation` and `annotations`
are equals by 'equals'

^KT-56046
2023-02-03 19:49:03 +00:00
Dmitrii Gridin e1c8b3d674 [SLC] avoid return type check for implicit types
we should avoid value class check in implicit return types
to avoid extra resolve

^KT-56046
^KT-55788
2023-02-03 19:49:03 +00:00
Dmitrii Gridin e021655001 [LC] AbstractCompilerLightClassTest: add an additional test extension
^KT-56046
2023-02-03 19:49:02 +00:00
Dmitrii Gridin 2edb03a994 [LC] fix multifile testData
^KT-56046
2023-02-03 19:49:02 +00:00
Dmitrii Gridin 93232a23df [AA] introduce AnnotationUseSiteTargetFilter to simplify API
^KT-56046
2023-02-03 19:49:01 +00:00
Dmitrii Gridin 59f07c2197 [SLC] add test on enum entry annotations
^KT-56046
2023-02-03 19:49:01 +00:00
Dmitrii Gridin 24041bf96d [FIR] CompilerRequiredAnnotationsHelper: add kdoc about usages from SLC
^KT-56046
2023-02-03 19:48:56 +00:00
Dmitrii Gridin d13ad454da [AA FIR] fix nested type annotations lazy resolve
^KT-56046
2023-02-03 19:48:56 +00:00
Dmitrii Gridin 0a06efa1bf [SLC] add tests for unresolved annotations
^KT-56046
2023-02-03 19:48:55 +00:00
Dmitrii Gridin 16caeafa98 [FIR] temporarily remove Retention and Target annotations from COMPILER_REQUIRED_ANNOTATIONS phase
currently AbstractFirSpecificAnnotationResolveTransformer doesn't
work well for annotations with arguments

^KT-56046
2023-02-03 19:48:44 +00:00
Dmitrii Gridin 77609c2223 [AA FIR] avoid redundant resolve by annotations in IDE mode
^KT-56046
2023-02-03 19:48:43 +00:00
Dmitrii Gridin b4e7fde319 [FIR] FirBasedSymbol: avoid redundant resolve in IDE mode
^KT-56046
2023-02-03 19:48:43 +00:00
Dmitrii Gridin 00633e3abc [FIR] Move annotations required by IDE to COMPILER_REQUIRED_ANNOTATIONS phase
this annotations should be already resolved before TYPES phase
to avoid deadlocks

^KT-56046
2023-02-03 19:48:43 +00:00
Denis.Zharkov 6d7096b5e9 IR: Fix StackOverflowError caused by using DNN type in lambda
^KT-54140 Fixed
2023-02-03 14:08:57 +00:00
Mikhail Zarechenskiy c586d7a03a Use more specific error for secondary constructor bodies in inline classes
- Also, this error allows IDE to provide quick-fix that changes language
 version in a project that simplifies the adoption
 - There is no point in
 changing K2 part as there this feature will be enabled by default

 ^KT-56224 Fixed
2023-02-03 13:38:31 +00:00
Zalim Bashorov f3e022e4ca [Wasm] Print an instruction if CompileError was thrown while instantiating a module
#KT-56160 Fixed
2023-02-03 14:06:32 +01:00
Alexander Korepanov 9324cf3360 [JS IR] Support function type interfaces in incremental cache infrastructure
The patch removes logic of generating extra IrFiles (fake file) into
 IrModuleFragment for the function type interfaces during klib deserialization,
 because IC infrastructure can not process files which do not exist in klib.

 Instead of adding extra IrFiles during deserialization, the empty files
 with required packages are added into Kotlin/JS stdlib physically.
 These files are used as containers for function type interface declarations.

 Since Kotlin/WASM uses the same klib loading infrastructure as Kotlin/JS,
 the the empty files are added into Kotlin/WASM stdlib as well.

 The patch also adds a check that IrModuleFagment has files only from klib.

^KT-55720 Fixed
2023-02-03 12:23:48 +00:00
Marco Pennekamp 1c3c5417ad [JVM IR] KTIJ-24335 Fix stub generation of symbols without descriptors
- Symbols without a descriptor (e.g. `IrClassPublicSymbolImpl`) were
  causing exceptions in `DeclarationStubGenerator` after recent changes,
  because their property `irClassSymbol.descriptor` doesn't necessarily
  exist without the symbol having an owner bound to it first.
- `DeclarationStubGenerator` now falls back to its `descriptor` argument
  if `irClassSymbol` doesn't have a descriptor.
2023-02-03 12:23:11 +00:00
Marco Pennekamp e7bf4da796 [JVM IR] KTIJ-24335 Require stubbing for built-in symbol deduplication
- Built-in symbol deduplication has only been tested with stubbing
  enabled. Because there is no current use case for deduplication
  without stubbing, an exception will be thrown to communicate the
  misconfiguration.
2023-02-03 12:23:10 +00:00
Marco Pennekamp d1df6391db [JVM IR] KTIJ-24335 Fix stub generation of deduplicated built-ins
- Some built-in symbols like `OptIn` haven't been created yet by the
  time `irBuiltIns` is bound to `SymbolTableWithBuiltInsDeduplication`.
  This caused an issue where `DeclarationStubGenerator` would get the
  built-in symbol from `referenceClass`, but still stub for the original
  duplicate `descriptor` and its associated own symbol. Because
  `generateClassStub` would check `referenceClass.isBound` for the
  built-in symbol, `isBound` was never checked for the duplicate symbol
  and thus a "symbol already bound" exception occurred if
  `generateClassStub` was invoked twice for a duplicate `descriptor`.
- The solution takes the descriptor from the `IrClassSymbol` returned
  by `referenceClass`.
2023-02-03 12:23:10 +00:00
Marco Pennekamp f11ea92601 [JVM IR] KTIJ-24335 Deduplicate class symbols of duplicate built-ins
- When the IR backend is invoked from the bytecode tool window,
  multiple descriptors may exist of the same built-in. For example,
  there may be multiple descriptors for `Boolean`.
- This caused issues when the `IrClassifierSymbol` of a type was used
  as a key for some built-ins map (such as `primitiveRefProviders` in
  `JvmSharedVariablesManager`). Because while the reference map is
  built from predeclared built-ins, with duplicate descriptors,
  multiple `IrClassifierSymbol`s may exist for the same type. Such a
  duplicated symbol would lead to an exception.
- The solution invents a special symbol table which de-duplicates
  built-ins at the point where `IrClassSymbol`s are created.

I tried other approaches:

- It's possible to fix the symptoms in `JvmSharedVariablesManager` and
  `JvmSymbols` by turning the keys of the requisite maps, i.e.
  `primitiveRefProviders` and `arraysCopyOfFunctions`, from
  `IrClassifierSymbol` to something like a `Name` or `PrimitiveType`.
  This however touches the IR backend beyond the IDE and still leaves
  error potential for all the other possibly duplicated built-ins.
- I tried to handle built-ins in `DeclarationStubGenerator` specially,
  to circumvent the issue of duplicated descriptors, but this is not a
  solution because the duplicated `IrClassSymbol`s will already be part
  of the IR at that point.

^KTIJ-24335 fixed
2023-02-03 12:23:09 +00:00
Marco Pennekamp ba2e716682 [JVM IR] KTIJ-24206 Stub getters/setters of orphaned expect properties
- Property getters and setters are not marked as `isExpect` even if the
  corresponding property is. This commit fixes the generation of actual
  stubs for such functions.
2023-02-03 12:23:09 +00:00
Marco Pennekamp c9461a3827 [JVM IR] KTIJ-24206 Add an option to stub orphaned expect symbols
- The cause for KTIJ-24206 is that the `expect` function's parent is an
  `IrFile` instead of an `IrClass`. This is because
  `ExpectDeclarationsRemoveLowering` removes `expect` declarations
  before `FileClassLowering` can replace `IrFile` parents.
- That behavior is normally okay, but breaks down when an `expect`
  declaration has no associated `actual` declaration. In such cases,
  `ExpectDeclarationsRemoveLowering` doesn't replace `expect` symbols in
  expressions with their corresponding `actual` symbols, as it normally
  would.
- The solution fills in `ExpectDeclarationsRemoveLowering`'s behavior
  by replacing `expect` symbols for which no `actual` symbols exist with
  stubs. See `stubOrphanedExpectSymbols`.
- To not mess with the lowerings, `stubOrphanedExpectSymbols` is invoked
  during IR generation. It uses the same `ExpectSymbolTransformer`
  as `ExpectDeclarationRemover`.

^KTIJ-24206 fixed
2023-02-03 12:23:09 +00:00
Egor Kulikov 8b1e508740 [FIR] Make check for dangling modifier lists use stubs
Seventh step for ^KT-52615

Merge-request: KT-MR-8651
Merged-by: Egor Kulikov <Egor.Kulikov@jetbrains.com>
2023-02-03 12:21:58 +00:00
Igor Chevdar c871ccc4dd [K/N][IR] Turned off partial tail call optimization
It is difficult to implement properly tail calls for a real coroutine (when there
are other non tail calls), because of continuation interception semantics. And the
benefits aren't clear at this point, so let's turn it off for now.
2023-02-03 11:14:53 +00:00
Igor Chevdar 716853dd00 [K/N][IR] Tail call optimization for suspend lambdas 2023-02-03 11:14:53 +00:00
Yan Zhulanow e8570826e6 [LL API] Replace 'FirScript.containingFileSymbol' with 'FirProvider' API 2023-02-03 08:59:37 +00:00
Yan Zhulanow f352f7d5ba [LL API] Recognize scripts in Analysis API
Although the proper support for script resolution is yet to arrive
in K2, some initial steps are required to make LL API understand
such a concept.
2023-02-03 08:59:37 +00:00