Alexander Udalov
e4cd7cdbcf
IR: remove unused code, cleanup
2020-08-06 17:08:04 +02:00
Alexander Udalov
b30b2e0179
IR: minor, render duplicate IR node in checker
2020-08-06 17:08:04 +02:00
Alexander Udalov
8db1c3611b
IR: introduce abstract class IrDeclarationBase
...
The main purpose of this class is to improve performance of IR visitors
and transformers. `IrElementVisitor.visitDeclaration` now takes
IrDeclarationBase as a parameter, and therefore the call to `accept`
there is now a virtual class call, instead of an interface call.
2020-08-06 17:08:04 +02:00
Alexander Udalov
771e7574f4
IR: make subtypes of IrDeclaration classes
2020-08-06 17:08:03 +02:00
Alexander Udalov
3cecf81176
IR: transform base classes of lazy IR to interfaces
2020-08-06 17:08:02 +02:00
Alexander Udalov
b02653a524
IR: remove base classes IrDeclarationBase and IrFunctionBase
...
They introduce a diamond class hierarchy which prevents IR element
hierarchy from being transformed to classes.
2020-08-06 16:46:26 +02:00
Alexander Udalov
9152df4702
PIR: transform base implementation classes to interfaces
...
Unfortunately this requires a lot of boilerplate, but is a requirement
for transforming the main IR element hierarchy interfaces
(IrDeclaration, IrClass, ...) to classes.
2020-08-06 16:46:26 +02:00
Jinseong Jeon
b57794d96e
IR util: IrExpression.isSafeToUseWithoutCopying
2020-08-05 17:07:27 +03:00
Roman Artemev
4f73e08704
[KLIB] Make fake override resolver garbage free as much as possible
...
- reduce memory pollution during FO resolve
2020-08-03 19:22:07 +03:00
Roman Artemev
876ee265f2
[KLIB] Fix memory leak in fake override resolver
2020-08-03 19:22:07 +03:00
Roman Artemev
e189cb1895
[KLIB] Fix memory leak in linker through haveSeen set
2020-08-03 19:22:06 +03:00
Roman Artemev
19b5fda750
[KLIB] Do not duplicate origin mapping per file
2020-08-03 19:22:06 +03:00
Roman Artemev
c253042948
[KLIB] Reduce amount of descriptors loaded during desc-idSig resolution
2020-08-03 19:22:06 +03:00
Steven Schäfer
b15e32936e
JVM IR: Optimize delegated properties (KT-36814)
2020-07-31 19:00:27 +03:00
Dmitry Petrov
e11c90f26c
JVM_IR: KT-40293 Box return type for DefaultImpls methods if required
2020-07-31 14:48:12 +03:00
Ilmir Usmanov
fa8c6deb18
Support restricted suspend lambdas in JVM_IR
...
#KT-40135 Fixed
2020-07-30 20:40:37 +02:00
Dmitry Petrov
46fccae7d1
PSI2IR: KT-40499 Fix delegated property desugaring
...
No type arguments were provided for property reference inside delegated
property accessors.
2020-07-30 13:18:36 +03:00
Georgy Bronnikov
a27d63f58f
JVM_IR: flexible nullability as annotation
...
We carry information about flexible nullability of IrType as an
annotation, so there is no need to look at its underlying KotlinType.
2020-07-30 11:24:07 +03:00
Georgy Bronnikov
a2e9521ad5
Make DescriptorlessExternalPackageFragmentSymbol public
2020-07-30 11:24:07 +03:00
Georgy Bronnikov
c2ead0303b
IR: remove more descriptor usage
2020-07-30 11:24:07 +03:00
Alexander Gorshenev
9a717e9ecf
Don't copy default value parameters for fake overrides
2020-07-29 22:15:10 +03:00
Mark Punzalan
2cfd776092
ForLoopsLowering: Assume step == 1 for *Range (e.g., IntRange) and
...
handle accordingly (e.g., do not read `step` property).
2020-07-29 20:44:51 +02:00
Alexander Udalov
687d13a320
IR: cleanup expression implementations
...
Remove unused constructors with descriptors, minimize usages of
secondary constructors and make some properties non-lateinit, fix some
inspections.
2020-07-28 20:05:58 +02:00
Alexander Udalov
e36d3ba4f6
IR: remove IrNoArgumentsCallableReferenceBase
...
To simplify transformation of IR element hierarchy to classes.
2020-07-28 20:05:57 +02:00
Alexander Udalov
f240d51d2c
IR: do not inherit IrFakeOverride* from IrFunction/IrProperty
...
This will help to reduce boilerplate after making the latter classes.
Without this change, IrFunctionCommonImpl would not be able to be a
class because it would introduce a diamond class hierarchy, and thus
that would require copying all its contents to IrFunctionImpl and
IrFakeOverrideFunctionImpl.
2020-07-28 19:05:12 +02:00
Alexander Udalov
0909894a96
PIR: make most implementations and carriers internal
2020-07-28 19:04:44 +02:00
Alexander Udalov
cce55f1609
IR: add module ir.tree.impl, move main IR implementation there
2020-07-28 19:04:44 +02:00
Alexander Udalov
77247deb23
IR: add module ir.tree.persistent, copy PIR implementation there
...
Use PersistentIrFactory in JS IR compiler entry points.
2020-07-28 19:04:43 +02:00
Alexander Udalov
9aed92d2dd
Partially revert "Persistent IR implementation"
...
This partially reverts commit f437da8ee5 .
Changes related to carriers and others are still there. They will be
moved out to a separate module in a subsequent commit.
2020-07-28 19:04:43 +02:00
Dmitry Petrov
4fdccb3b35
JVM_IR: don't generate repeated ElementType values in @Target
2020-07-28 18:19:20 +03:00
Alexander Udalov
df324d5a08
IR: pull up common accept/transform implementations to interfaces
...
To avoid duplicating them among the main, persisting, lazy, and
fir2ir-lazy implementations.
Also reformat a bit, and avoid storing descriptor in a field in some
places.
2020-07-28 12:05:24 +02:00
Alexander Udalov
12d2a02d22
JS IR: drop JsIrDeclarationBuilder
...
Move buildValueParameter back to JsIrBuilder, and use common IR builders
directly where buildFunction was called.
2020-07-28 12:05:24 +02:00
Alexander Udalov
0d605a6b7f
IR: create IrBlockBody via IrFactory
2020-07-28 12:05:24 +02:00
Alexander Udalov
9ad4a754ce
IR: create IrExpressionBody via IrFactory
2020-07-28 12:05:24 +02:00
Alexander Udalov
d1dc938a5d
IR: use IrFactory in IR builders
2020-07-28 12:05:24 +02:00
Alexander Udalov
898dd20a9e
IR: use IrFactory in misc utils
2020-07-28 12:05:23 +02:00
Alexander Udalov
f359f36ed9
IR: add IrFactory to IrDeclaration, use in deep copy
2020-07-28 12:05:23 +02:00
Alexander Udalov
305288aa82
IR: use IrFactory in psi2ir
2020-07-28 12:05:23 +02:00
Alexander Udalov
9356f87f28
IR: use IrFactory in linker
2020-07-28 12:05:23 +02:00
Alexander Udalov
db4cbe7103
IR: use IrFactory in SymbolTable
2020-07-28 12:05:23 +02:00
Alexander Udalov
c6a127e87e
IR: introduce IrFactory
...
This is needed to refactor IrPersistingElementBase-based implementations
into another module, to use it in JS IR.
2020-07-28 12:05:23 +02:00
Dmitry Petrov
43fcb2330e
JVM_IR: fix source file name for mutlifile class facades
2020-07-27 19:13:37 +03:00
Dmitriy Dolovov
3d9093583f
Metadata: 'non-stable parameter names' flag for callables
...
^KT-34602
2020-07-27 23:11:30 +07:00
Steven Schäfer
9d63412b3e
JVM IR: Produce correct generic signatures for special bridge methods
2020-07-27 17:02:24 +02:00
Steven Schäfer
c16b548dff
JVM IR: Don't produce annotations on builtin stub, toArray, and bridge methods
2020-07-27 17:02:24 +02:00
Dmitry Petrov
e2a4ca10d6
JVM_IR: fix inner class attributes for private class in interface
2020-07-23 19:13:28 +03:00
Svyatoslav Kuzmich
4a803e9d2f
[JS IR] Support object declaration export
...
Fixes KT-39117 and KT-39367
2020-07-23 08:21:59 +03:00
Alexander Udalov
65d3ae6253
JS IR: move declaration creation from IrBuilder to JsIrDeclarationBuilder
...
This is a temporary class until IrDeclarationFactory is there.
2020-07-22 22:40:08 +02:00
Alexander Udalov
d3a34a8898
Psi2Ir: somewhat simplify Psi2IrTranslator API
...
Inline some methods only used once, deduplicate usages, rearrange
parameters, etc.
2020-07-22 22:38:21 +02:00
Alexander Udalov
241f82c70f
IR: avoid storing unnecessary fields in IrPropertyImpl
2020-07-22 22:38:21 +02:00