Commit Graph

1542 Commits

Author SHA1 Message Date
Sergej Jaskiewicz 1f76d39e66 [IR] Make IrTypeArgument a sealed interface 2023-01-20 10:58:28 +00:00
Artem Kobzar 71486a321c [K/JS] Add support of compilation with ES-classes 2023-01-17 18:14:17 +00:00
Ivan Kochurkin c9a8f433fb [FIR2IR] Temporary fix of createIrEnumEntry
Check if a bound entry with the same signature is already exist
2023-01-13 12:56:01 +00:00
Mikhail Glukhikh 33daca6809 FIR2IR: don't merge symbol tables as it's no more needed 2023-01-13 12:55:59 +00:00
Ivan Kochurkin f17e1314f6 [FIR2IR] Implement tables merging in Fir2Ir classes and SymbolTable
- Pass dependent (usually common code) components to further FIR2IR converters
- Don't reinitialize builtin
2023-01-13 12:55:57 +00:00
Alexander Udalov 6d0628900e Kapt+JVM_IR: support annotations with error types
This is a hack to implement KT-32596 in the JVM IR version of kapt.
Basically we allow psi2ir to generate annotations whose classifier is
error class, which happens when it's unresolved. Because there's no
physical IR for an error class, we create stub IR for it via
SyntheticDeclarationsGenerator in case we'll need it.

With this hack, annotations with unresolved classifiers magically
survive all the way until the codegen (with a minor change in
IrBasedDescriptors) where they are generated as
`@error.NonExistentClass`, which then gets corrected by the kapt's
"correct error types" mode as in all other cases of error types.
2023-01-13 02:38:40 +01:00
Svyatoslav Scherbina b7c336217f K2: fix accept() impl for IrBasedPropertyAccessorDescriptor
Otherwise IdSignatureDescriptor computes wrong signatures for such
descriptors.
2023-01-12 17:52:10 +00:00
Sergej Jaskiewicz 4a2a77d9b9 [K/N] Make classes generated from λs that use generic parameters generic
Previously, a function reference that used generic parameters from its
outer scope was lowered into a top-level non-generic subclass of
`FunctionN`, with `FunctionN` type arguments referencing type parameters
not present in the scope anymore. This sometimes resulted in generating
malformed mangled names.

From now on the generated subclass of `FunctionN` is generic. The needed
type arguments are passed upon instantiation, when the relevant generic
parameters are present in the scope.
2023-01-12 15:32:50 +00:00
Alexander Udalov 3c4b5529af Update year to 2023 in COPYRIGHT_HEADER.txt
This commit is the result of changing the year to 2023 in
COPYRIGHT_HEADER.txt and running all `generate*` tasks in
`generators/build.gradle.kts`.
2023-01-02 22:52:15 +01:00
Dmitriy Dolovov 4428971401 [LazyIR] Exclude INVISIBLE_FAKE callable members from class declarations
Fixes KT-55509
2023-01-02 07:38:53 +00:00
Ilya Chernikov a89dfdce03 K2 Scripting: add support for script args to FIR part 2022-12-21 14:34:20 +00:00
Ilya Chernikov 533a5671bc K2 Scripting, IR: add script receiver on conversion to class 2022-12-21 14:34:19 +00:00
Alexander Udalov 5dd1777624 IR: minor, deprecate nameForIrSerialization, use name instead 2022-12-15 12:31:11 +00:00
Steven Schäfer 6af616d3c3 FIR: make declarations marked with 'override' implicitly open
#KT-52236 Fixed
2022-12-14 21:46:41 +00:00
Pavel Mikhailovskii 1a76804862 KT-51290 Account for context receivers when generating delegate function bodies 2022-12-09 15:36:45 +00:00
Pavel Mikhailovskii 08767d572b KT-51247 Fix resolution of functional types with context receivers 2022-12-09 15:29:39 +00:00
Pavel Mikhailovskii 76997edebe KT-52373 Fix generation of synthetic functions with context receivers and default parameters 2022-12-09 09:39:26 +00:00
Evgeniy.Zhelenskiy 40f38c8adb [IR] Eliminate redundant boxing/unboxing of MFVC after inlining
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com>

#KT-1179
2022-12-08 15:12:28 +00:00
Mark Mann 3592c87abf Fix enumeration of empty list in KotlinLikeDumper
In some cases where the Kotlin compiler encounters an exception, it attempts to print the contents of the file that it was compiling at the time. Sometimes the content contains symbols that aren't bound to implementations. When that happens the safe value parameters for a function are empty because none of them can be resolved, but the value parameter count is still non-zero because the function reference still has multiple params — this causes exception messages to fail with an error:

```
Exception in thread "main" java.lang.IllegalStateException: Problem with constructing exception message
```
This fixes the issue by only attempting to access the safe value parameters if the list is of the proper size.

KT-54012
2022-12-07 19:46:49 +01:00
Alexander Udalov fd9b19ee49 Remove unsafe cast function usages from IR modules 2022-12-06 19:44:55 +00:00
Mikhail Glukhikh 5cf1a88c42 FE: move delegate name functions to NameUtils 2022-12-02 21:54:18 +00:00
Steven Schäfer a7ba081d22 FIR: Fix interface delegation ABI
- Unifies the name of the `$$delegate_<n>` field between K1 and K2.
- Make the `$$delegate_<n>` field private
2022-12-02 21:54:18 +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 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
Nikolay Lunyak 2e9f9f987b [FIR] KT-44698: Print file:line:offset on K2 crash
^KT-44698 Fixed
2022-11-29 22:35:51 +00:00
Sergej Jaskiewicz aa1b18b0c8 [IR] Prevent infinite recursion when rendering bound symbol references
Refactor the renderer, make BoundSymbolReferenceRenderer a static class
to prevent calling RenderIrElementVisitor's methods from it to avoid
infinite recursion in the future.

^KT-52677 Fixed
2022-11-28 16:43:53 +00:00
Pavel Kunyavskiy 09518a457a Better unbound symbols support for dumpKotlinLike
If there is an unbound symbols in IrTree near backend exception,
compiler failed again during processing an error.

It led to hard-understandable error. Now at least it would show
problematic part of code, which is better for making workarounds.

^KT-55088
2022-11-28 14:22:46 +00:00
Ilya Chernikov 4af32b8d36 K2 Scripting, IR: non-class based scripts support in IR 2022-11-26 18:01:49 +00:00
Ilya Chernikov cc9a7480a2 K2 Scripting: add FIR2IR conversion for FirScript 2022-11-26 18:01:49 +00:00
Sergej Jaskiewicz 77e197d46a [IR] Add documentation comments for IdSignatures 2022-11-24 17:13:31 +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
Dmitrii Gridin f67030f035 [FIR IR] DumpIrTree: drop irrelevant change
^KT-54417
2022-11-17 09:50:14 +00:00
Dmitrii Gridin 33281770c7 [FIR IR] support FirReceiverParameter
^KT-54417
2022-11-17 09:50:11 +00:00
Ilya Chernikov 4e4511bba2 FIR2IR: convert enums with non-primary default ctor correctly
see added test for example
2022-11-12 16:28:24 +01:00
Alexander Korepanov 95e305be3a [JS IR] Simple memory optimizations
- Use hash maps and hash sets instead of linked implementations
 - Use weak hash maps for caches with IR elements as keys
 - Intern JS function signatures
2022-11-08 15:18:43 +00:00
Bogdan Mukvich fce8b877c8 Remove unused WriteCopyrightToFile gradle task
#KTI-758
2022-11-07 08:24:19 +00:00
vladislav.grechko c990bbb26c Get rid of excess method in compiled inline class with custom equals
^KT-54501: Fixed
2022-10-21 12:57:11 +00:00
Dmitriy Dolovov bd4304c6e2 [IR] Partial linkage: Avoid false positively-detected unimplemented callables
^KT-53663
2022-10-20 10:18:56 +02:00
Dmitriy Dolovov 71d51801ce [IR] Partial linkage fix: Implement abstract fake overrides in non-abstract classes so that there are no call sites that still refer to abstract fake overrides
^KT-53663
2022-10-20 10:18:54 +02:00
Dmitriy Dolovov cb20998d93 [IR] Allow different origins in Ir[Function|Property]WithLateBinding
^KT-53663
2022-10-20 10:18:54 +02:00
Dmitriy Dolovov 859c465b9e [IR] Rename IrFakeOverride[Function|Property] to Ir[Function|Property]WithLateBinding
^KT-53663
2022-10-20 10:18:54 +02:00
vladislav.grechko cc1b4243dd Fix exception on 'equals()' returning 'Nothing' in inline class
^KT-54401: Fixed
2022-10-17 14:11:00 +00:00
vladislav.grechko e0c8142106 Support of custom 'equals' and 'hashCode' in inline classes
'equals' from any made available for overriding in inline classes
'typed' equals made available for definition in inline classes
'typed' equals definition made compulsory if 'untyped' is overridden
'operator' keyword is allowed in 'typed' equals definition

^KT-24874: Fixed
2022-10-10 16:52:34 +00:00
Evgeniy.Zhelenskiy 6f94af80ab [IR] Correct work of the new MFVC lowering classes
#KT-1179
2022-10-07 12:43:42 +00:00
Evgeniy.Zhelenskiy 894cdc2307 [IR] Implement equals call correct generation for MFVC
#KT-1179
2022-10-07 12:43:37 +00:00
Evgeniy.Zhelenskiy 0c1c25e477 [IR] Implement MFVC basic flattening
#KT-1179
2022-10-07 12:43:36 +00:00
Evgeniy.Zhelenskiy d4969e9b97 Revert "rra/zhelenskiy/flattening_impl"
This reverts commit b7f5c039a6.
2022-10-07 12:43:36 +00:00
Evgeniy.Zhelenskiy c2284d15a5 [IR] Correct work of the new MFVC lowering classes
#KT-1179
2022-10-07 12:42:11 +00:00
Evgeniy.Zhelenskiy 73b0fac657 [IR] Implement equals call correct generation for MFVC
#KT-1179
2022-10-07 12:42:07 +00:00
Evgeniy.Zhelenskiy 2896f5613d [IR] Implement MFVC basic flattening
#KT-1179
2022-10-07 12:42:06 +00:00