Dmitry Petrov
6830a7db43
PregeneratedCall -> CallBuilder
2016-10-18 09:08:25 +03:00
Dmitry Petrov
17758d8c00
'try'
2016-10-18 09:08:24 +03:00
Dmitry Petrov
ebd8f1266d
IrOperatorExpression -> IrPrimitiveCall
...
All "primitives" have their descriptors now.
2016-10-18 09:08:24 +03:00
Dmitry Petrov
c79b9c12d6
'throw'
2016-10-18 09:08:24 +03:00
Dmitry Petrov
4709aaafaa
'for'
2016-10-18 09:08:23 +03:00
Dmitry Petrov
03a666690b
'break' & 'continue'
2016-10-18 09:08:23 +03:00
Dmitry Petrov
87c7b4834b
'while' & 'do-while' loops
2016-10-18 09:08:22 +03:00
Dmitry Petrov
8bba49cba6
Block expressions & types.
2016-10-18 09:08:22 +03:00
Dmitry Petrov
594a553a04
Safe calls.
2016-10-18 09:08:21 +03:00
Dmitry Petrov
985f3b20c7
Unary operators.
2016-10-18 09:08:21 +03:00
Dmitry Petrov
97593fa19e
Make 'when' great again.
2016-10-18 09:08:20 +03:00
Dmitry Petrov
f787f8ecbf
Refactor desugaring (& operator conventions generation), step 1.
2016-10-18 09:08:20 +03:00
Dmitry Petrov
c0d521266b
Use ternary 'if' for 'when' (and also '||' as ',' in 'when').
2016-10-18 09:08:20 +03:00
Dmitry Petrov
c36a0d04ce
Shrinking IR: introduce IrBuiltIns (as a container for special operator descriptors)
2016-10-18 09:08:19 +03:00
Dmitry Petrov
70dfb75f82
Shrinking IR: GetProperty / SetProperty expressions are now generated as calls.
2016-10-18 09:08:19 +03:00
Dmitry Petrov
8500f5ddb2
Preliminary work on loops.
2016-10-18 09:08:18 +03:00
Dmitry Petrov
de5181d642
More tests for 'when'
2016-10-18 09:08:18 +03:00
Dmitry Petrov
b96626fd4c
When expression.
...
Fix object & enum references.
2016-10-18 09:08:17 +03:00
Dmitry Petrov
d6040d8570
Type operators.
2016-10-18 09:08:17 +03:00
Dmitry Petrov
5709826096
Refactoring.
...
'if' expressions (represented as 'when' without subject).
2016-10-18 09:08:16 +03:00
Dmitry Petrov
1ddf889d8a
Comparisons:
...
- for primitive types and kotlin.String, use IrBinaryOperatorExpression
- for others, use call to 'compareTo'
2016-10-18 09:08:16 +03:00
Dmitry Petrov
ace98b91cc
Handle infix function calls in binary expressions.
2016-10-18 09:08:16 +03:00
Dmitry Petrov
3614b0a06c
Generate IMPLICIT_NOTNULL for (nullability flexible type) -> (non-null type) implicit conversion.
2016-10-18 09:08:15 +03:00
Dmitry Petrov
2b6171057e
Fix type of increment/decrement for array element.
...
Minor cleanup.
2016-10-18 09:08:15 +03:00
Dmitry Petrov
64d630faa3
Detailed "operator" convention information (for JS).
2016-10-18 09:08:14 +03:00
Dmitry Petrov
4a62a6b7c3
Prefix increment / decrement.
...
Refactor IrLValue.
2016-10-18 09:08:14 +03:00
Dmitry Petrov
68cdcfa853
Minor: assertion in IrSingleExpressionValue to ensure that corresponding expression is detached and instantiated once.
2016-10-18 09:08:13 +03:00
Dmitry Petrov
8de21aadfa
'?:' (currently represented as binary expression with operator ELVIS)
2016-10-18 09:08:13 +03:00
Dmitry Petrov
0d94c3aeb4
'in' and '!in' operators.
2016-10-18 09:08:12 +03:00
Dmitry Petrov
96e3c52878
Equality and identity operators.
2016-10-18 09:08:12 +03:00
Dmitry Petrov
db5843adc8
Desugar comparison operators as IrBinaryOperatorExpression.
...
They are not exactly 'compareTo' calls (although annotated with a related 'compareTo' function),
and require special treatment in BEs.
2016-10-18 09:08:11 +03:00
Dmitry Petrov
1b018a6ead
Desugar basic binary operators (+, -, *, /, %, ..).
...
Fold String.plus calls to IrStringConcatenationExpression.
2016-10-18 09:08:11 +03:00
Dmitry Petrov
287d804131
Rematerialize simple expressions (local variables, literals, $this, $receiver) when generating calls.
2016-10-18 09:08:11 +03:00
Dmitry Petrov
c1583c4368
Complex augmented assignment test.
...
Fix string literal creation for empty string template.
2016-10-18 09:08:10 +03:00
Dmitry Petrov
64d7a97145
IR, testing framework: if no tree labels were provided in source file, use default golden file.
2016-10-18 09:08:10 +03:00
Dmitry Petrov
aee83f5a77
Minor: IrIndexedLValue can use IrExpression's, since its subexpressions should be evaluated once.
2016-10-18 09:08:09 +03:00
Dmitry Petrov
888b1685ed
Introduce name hints for temporary variables.
...
Split IrValue.kt into a subpackage.
2016-10-18 09:08:09 +03:00
Dmitry Petrov
177acaabf5
Refactor top-down generation.
2016-10-18 09:08:08 +03:00
Dmitry Petrov
278dc14124
IrSingleExpressionValue
2016-10-18 09:08:08 +03:00
Dmitry Petrov
d7412c449e
IR: augmented assignment for array access expressions
2016-10-18 09:08:07 +03:00
Dmitry Petrov
0a57eb8ea4
IR:
...
- smart casts handling separated from expression generation
- improved infrastructure for desugaring
2016-10-18 09:08:07 +03:00
Dmitry Petrov
ecf6ab9e25
IR:
...
- Redo smart casts handling (yet again).
Front-end typing information can't be used for expressions in IR,
since it provides inferred type for PSI expressions for the last corresponding resoled call.
- Assignments handling, initial implementation.
2016-10-18 09:08:07 +03:00
Dmitry Petrov
c4bbcadb34
IR: Collapse desugared blocks as a postprocessing pass.
2016-10-18 09:08:06 +03:00
Dmitry Petrov
aa7bf4637b
IR:
...
- function with expression bodies are desugared to blocks with return statement;
- property initializers are generated as regular expression bodies.
2016-10-18 09:08:06 +03:00
Dmitry Petrov
2707d33ca7
IR: dummy declarations for class/object and typealias
2016-10-18 09:08:05 +03:00
Dmitry Petrov
f903fb8ad3
IR: destructuring declarations in regular statements
2016-10-18 09:08:05 +03:00
Dmitry Petrov
37cce98d19
Simplify IrElement hierarchy.
...
IrDeclaration can be now hosted under IrExpression (as IrStatement).
2016-10-18 09:08:04 +03:00
Dmitry Petrov
55eb79febf
Make IrExpression.type nullable.
2016-10-18 09:08:04 +03:00
Dmitry Petrov
030111b130
IrBody is no longer a declaration owner.
...
Local declarations in expression tree.
Call generator supports argument reordering.
2016-10-18 09:08:03 +03:00
Dmitry Petrov
b1af1af8a4
IR test tests: use that magical '<<<' everywhere. No need for 'IR_FILE_TXT'.
2016-10-18 09:08:03 +03:00