Andrey Yastrebov
9d30fb1b1c
KT-65741 Fix SIR visitor parameter name & fix typo
2024-02-22 18:46:01 +00:00
Nikolay Lunyak
389f02b016
[FIR] Let FirErrorExpression have a working type if possible
...
^KT-65337 Fixed
2024-02-14 09:57:12 +00:00
Sergej Jaskiewicz
f844a86057
[utils] Introduce the bind function and use it throughout
2023-12-13 10:04:45 +00:00
Sergej Jaskiewicz
cab87eba21
[SIR, FIR generators] Add KDocs for visitor-related methods of elements
2023-12-12 14:27:57 +00:00
Sergej Jaskiewicz
1bed6a063f
[SIR] Add SirTransformerVoid class
...
This is convenient for cases when the transformer has no context to pass
to each method
2023-12-12 14:27:57 +00:00
Sergej Jaskiewicz
80847b9ee2
[SIR generator] Add SirVisitorVoid class
...
This is convenient for cases when the visitor has no context to pass to
each method
2023-12-12 14:27:57 +00:00
Sergej Jaskiewicz
80c9eae409
[tree generators] Factor out common transformer printing logic
2023-12-12 14:27:57 +00:00
Sergej Jaskiewicz
0d2032f3ef
[SIR] Auto-generate the Swift IR tree
...
Co-authored-by: Gleb Lukianets <gleb.lukianets@jetbrains.com >
2023-12-08 10:09:09 +00:00
Sergej Jaskiewicz
39c84bca06
[tree generators] Add a method for configuring all leaf builders
...
It will be used in the new Swift IR tree that will be added in the next
commit.
2023-12-08 10:09:09 +00:00
Sergej Jaskiewicz
8d1907e2f5
[FIR/IR generator] Introduce the common entry point for tree generators
...
This reduces code duplication.
2023-12-05 20:30:22 +00:00
Sergej Jaskiewicz
19ff050eae
[FIR/IR generator] Move usedTypes to AbstractElement, rename it
2023-12-05 20:30:22 +00:00
Sergej Jaskiewicz
d0f87f9aba
[FIR/IR generator] Rename field's needAcceptAndTransform to isChild
...
This better describes the semantics.
2023-12-05 11:41:02 +00:00
Sergej Jaskiewicz
f46a14522f
[FIR generator] Remove unused notNull property
2023-12-01 12:06:06 +00:00
Sergej Jaskiewicz
f3016e1dcb
[FIR generator] Avoid FIR-specific code in AbstractBuilderPrinter
2023-12-01 12:06:06 +00:00
Sergej Jaskiewicz
cae4a9930b
[FIR generator] Extract the Builder class to a common module
...
We want to use it to generate builder classes for other
trees, just like we already do with elements (see `AbstractElement` and
`AbsractImplementation`).
2023-12-01 12:06:06 +00:00
Sergej Jaskiewicz
91b5a71f1a
[FIR generator] Extract the Implementation class to a common module
...
We want to use it to generate implementation classes for other
trees, just like we already do with elements (see `AbstractElement`).
2023-12-01 12:06:06 +00:00
Sergej Jaskiewicz
7bd4de65f8
[IR generator] Deduplicate field copying logic
2023-11-28 16:24:40 +00:00
Sergej Jaskiewicz
5f04bc8a27
[IR generator] Simplify computation of walkable children
...
Don't require to specify them explicitly via `isChild` in IR generator,
instead test the field type whether it is an element.
2023-11-28 16:24:40 +00:00
Sergej Jaskiewicz
ad4e97154f
[FIR/IR generator] Factor out allFields to AbstractElement
2023-11-28 16:24:40 +00:00
Sergej Jaskiewicz
38ee477ab4
[FIR/IR generator] Make AbstractField generic over itself
...
This will make some code more type-safe.
2023-11-28 16:24:40 +00:00
Sergej Jaskiewicz
c6eb7d6c21
[FIR/IR generator] Factor out walkableChildren and transformableChildren
2023-11-28 16:24:40 +00:00
Sergej Jaskiewicz
13ae129505
[FIR/IR generator] Move isSealed property to AbstractElement
2023-11-28 16:24:40 +00:00
Sergej Jaskiewicz
0465c6d0ee
[FIR/IR generator] Make InterfaceAndAbstractClassConfigurator open
2023-11-28 16:24:40 +00:00
Sergej Jaskiewicz
4307e76f15
[FIR/IR generator] Remove visitSuperTypeByDefault from visitor printers
...
This property is FIR-specific, no need to use it in the generic printer.
2023-11-24 17:29:58 +00:00
Sergej Jaskiewicz
a5b5492b2d
[IR generator] Simplify configuration of visitor parents
...
Don't specify a visitor parent manually for each IR node,
use an algorithm instead.
2023-11-24 17:29:58 +00:00
Sergej Jaskiewicz
62d32471e1
[FIR generator] Extract BaseTransformerTypeFinder into the common module
...
We want to use it in other tree generators.
2023-11-24 17:29:58 +00:00
Sergej Jaskiewicz
8eefb210f9
[FIR/IR generator] Introduce the shared Model class
2023-11-22 15:10:16 +00:00
Sergej Jaskiewicz
9a11208e67
[FIR/IR generator] Extract visitFunctionName to AbstractElement
2023-11-22 15:10:16 +00:00
Sergej Jaskiewicz
fab63e38aa
[FIR/IR generator] Reduce duplication when printing curly-braced blocks
2023-11-21 01:15:10 +00:00
Sergej Jaskiewicz
18ed85c26e
[IR generator] Auto-generate IrElementTransformerVoid
2023-11-21 01:15:10 +00:00
Sergej Jaskiewicz
02c12ae26f
[FIR generator] Write kDocs for accept & transform methods in FirElement
2023-11-09 13:30:25 +00:00
Sergej Jaskiewicz
ed28923282
[IR generator] Don't use kotlinpoet for auto-generating IR tree classes
...
KT-61970 Fixed
KT-61703 Fixed
2023-11-09 13:30:25 +00:00
Sergej Jaskiewicz
63e9dd588c
[FIR generator] Factor out element printer to common module
...
This is a step towards commonizing the code generator between
FIR and IR: KT-61970
2023-11-09 13:30:25 +00:00
Sergej Jaskiewicz
84bd12c667
[FIR generator] Factor out field printer into the common code
...
This is a step towards commonizing the code generator between
FIR and IR: KT-61970
2023-11-09 13:30:25 +00:00
Sergej Jaskiewicz
bca35c0015
[FIR/IR generator] Add default arguments to TypeVariable constructor
2023-11-09 13:30:25 +00:00
Sergej Jaskiewicz
a84277782a
[IR generator] Don't use kotlinpoet for auto-generating IrFactory
...
KT-61970
2023-11-06 09:47:22 +00:00
Sergej Jaskiewicz
54de11cb58
[FIR/IR generator] Generate kDocs for visitor classes
2023-11-02 23:05:18 +00:00
Sergej Jaskiewicz
570422dbd4
[FIR/IR generator] Print visitor method expression bodies on new line
...
This helps to avoid long lines in visitor classes.
2023-11-02 23:05:18 +00:00
Sergej Jaskiewicz
c5f519f7c7
[FIR/IR generator] Commonize visitor printing logic
...
This is a step towards commonizing the code generator between
FIR and IR: KT-61970
Also, don't use kotlinpoet for generating IR visitors (KT-61703)
2023-11-02 23:05:18 +00:00
Sergej Jaskiewicz
325b152efa
[FIR generator] Remove unused class ImplementationWithArg
2023-10-26 17:33:59 +00:00
Sergej Jaskiewicz
7b7bcb8ffa
[FIR/IR generator] Introduce ImportCollector
...
This class enables printing the import list in generated files
in a smarter way.
Also, refactor `Importable` interface hierarchy, namely, don't inherit
`TypeRef` from `Importable`, since we have types like `TypeRef.Star`
which are not really importable.
Replace the `Importable#typeWithArguments` property with
the `TypeRef#render` method to utilize `ImportCollector` while rendering
types.
2023-10-26 17:33:59 +00:00
Sergej Jaskiewicz
9eacdb3314
[FIR generator] Print builder property name in generated classes' KDocs
...
Just like we do when generating the IR tree
2023-10-24 10:29:43 +00:00
Sergej Jaskiewicz
7e7f4811bd
[FIR/IR generator] Add kDoc property to AbstractElement & AbstractField
2023-10-24 10:29:43 +00:00
Sergej Jaskiewicz
f2bb988e68
[FIR/IR generator] Replace getTypeWithArguments with a property
...
The `notNull` of that method was never used.
2023-10-20 10:49:20 +00:00
Sergej Jaskiewicz
de4e39906c
[FIR/IR generator] Use TypeRef for working with types in fields
...
- Don't inherit `AbstractField` from `Importable`, because it really
is not
- Remove the `arguments` and `nullable` properties from `AbstractField`.
Both properties can be derived from the field's `typeRef`.
- Make `AbstractField`'s `typeRef` property of type
`TypeRefWithNullability` instead of just `TypeRef`, because fields
can always be nullable.
2023-10-20 10:49:20 +00:00
Sergej Jaskiewicz
75b509c185
[FIR/IR generator] Share visitor-related properties between FIR & IR
2023-10-20 06:41:12 +00:00
Sergej Jaskiewicz
04c5ac0eb6
[FIR/IR generator] Factor out adding pure abstract element as parent
2023-10-19 12:00:25 +00:00
Sergej Jaskiewicz
5798021e4b
[FIR/IR generator] Refactor element parents
...
- Move `elementParents` and `otherParents` properties
to `AbstractElement`
- Use `elementParents` instead of `parentRefs` where needed
2023-10-19 12:00:25 +00:00
Sergej Jaskiewicz
417aa236fb
[FIR/IR generator] Factor out printing the preamble in generated files
2023-10-18 18:42:40 +00:00
Sergej Jaskiewicz
8c6da9fddb
[FIR/IR generator] Deduplicate interface/abstract class configuration
2023-10-18 12:39:39 +00:00