Dmitry Petrov
0595e93952
Use SymbolTable to create symbols for declarations
...
Introduce hierarchical sub-tables (for variables, type parameters, and value parameters).
First version passing all tests.
2017-05-04 09:33:03 +03:00
Dmitry Petrov
a416cddcb2
Generate declarations for FAKE_OVERRIDE members
2017-05-04 09:33:03 +03:00
Dmitry Petrov
8cea27b5bb
Generate IrTypeParameter and IrValueParameter declarations
2017-05-04 09:33:03 +03:00
Dmitry Petrov
fc38479f48
References to enum entries should be always generated as GET_ENUM
2017-03-24 10:06:10 +03:00
Dmitry Petrov
64013171e8
KT-16905 Wrong IR for call to inner class constructor through typealias
2017-03-24 10:06:10 +03:00
Dmitry Petrov
d05de88e3e
KT-16904 Wrong IR when applying some operators to superclass properties in constructor
...
Use property accessors for assignment generation for inherited properties in constructor.
2017-03-24 10:06:10 +03:00
Dmitry Petrov
d096f1d381
'while' and 'do-while' loop generator fixes.
...
Generate 'do-while' loop body as IrComposite, because variables declared
in loop body should be visible in loop condition.
Wrap 'do-while' loop in IrBlock so that variables declared in loop body
are not visible outside of the loop.
Generate 'while' and 'do-while' loops as expressions of type Unit.
2017-03-07 11:56:52 +03:00
Dmitry Petrov
cb61c358ea
Always generate primitive boolean constants as expressions of type 'kotlin.Boolean'.
2017-03-07 11:56:52 +03:00
Dmitry Petrov
6bc6c1b6cc
KT-16671 Calls to members imported from objects should be desugared in PSI2IR
2017-03-07 11:56:52 +03:00
Dmitry Petrov
e4683a1e9f
KT-16666 IMPLICIT_INTEGER_COERCION expression should have non-nullable type
2017-03-07 11:56:52 +03:00
Dmitry Petrov
8c32719f3d
Render 'type' for IrTypeOperatorCall expressions, update testData.
2017-03-07 11:56:52 +03:00
Dmitry Petrov
8e8f83656f
KT-16618 IMPLICIT_INTEGER_COERCION isn't generated for global properties and default parameters
2017-03-07 11:56:52 +03:00
Dmitry Petrov
634d9834de
Wrong receiver is generated for variable-as-function call on object.
...
Move 'generateExpressionForReferencedDescriptor' to CallGenerator,
use it in 'generateCall',
add PSI-free versions of some utility methods so that call elements can
be generated when we're already deep in ResolvedCall generation
and have forgotten about PSI.
2017-03-03 10:15:59 +03:00
Dmitry Petrov
97fbbc74e6
KT-16440 ClassConstructorDescriptorImpl has null returnType
...
Set constructor return type in FunctionDescriptorResolver#createConstructorDescriptor
(it seems to be the only place where ClassConstructorDescriptorImpl#initialize(...)
is called, but returnType is not set).
2017-03-02 14:25:58 +03:00
Dmitry Petrov
dd61a5b2c6
KT-16553 Underscore variable values shall not be evaluated
...
Do not generate 'componentN' calls for '_' in destructuring assignment.
2017-03-01 09:25:38 +03:00
Dmitry Petrov
63b16e14d8
KT-16536 Wrong IR generated for '++x'
...
Make psi2ir confirm to JVM BE behavior for prefix increment/decrement.
TODO reconsider after design decision (in 1.2?).
2017-03-01 09:25:38 +03:00
Dmitry Petrov
e66c2621af
KT-16436 Incorrect primitive constants handling
...
Expression '1.unaryMinus()' is resolved as Int::unaryMinus call with Int receiver.
However, this expression is implicitly coerced to a different integral type (Byte, Short, Long)
based on results of constant evaluation.
Introduce IMPLICIT_INTEGER_COERCION type operator to handle such cases.
TODO: should we use it for simple constant expressions like '1' and '-1'?
2017-03-01 09:25:38 +03:00
Dmitry Petrov
d0134f2c64
KT-16437 Incorrect type inference for some when coerced to Unit
...
If the result of 'when' is not used in an expression,
this 'when' expression has type 'Unit' despite of whatever FE has inferred.
2017-03-01 09:25:38 +03:00
Dmitry Petrov
33ed98a0d3
Update typing rules for class literal expressions.
...
C::class : KClass<C>
expr: T => expr::class : KClass<out T>
NB: this means Obj::class : KClass<out Obj> for object Obj.
2016-12-19 10:41:49 +03:00
Mikhail Zarechenskiy
62ac91a121
Add operator 'rem' to builtIns
...
Also deprecate operator 'mod'
2016-12-14 15:29:00 +03:00
Michael Bogdanov
b72d7557d1
KClassJavaProperty support
2016-10-18 09:10:13 +03:00
Michael Bogdanov
e543972dad
Properly calculate safe call receivers
2016-10-18 09:10:05 +03:00
Dmitry Petrov
a51efaacc9
Introduce IrGetValue as a replacement for IrThisReference / IrGetExtensionReceiver / IrGetVariable.
2016-10-18 09:09:59 +03:00
Dmitry Petrov
fc754e533d
Enum classes lowering.
2016-10-18 09:09:55 +03:00
Mikhail Glukhikh
979f2231a1
IR to CFG: when implementation in function generator, some when tests
2016-10-18 09:09:48 +03:00
Dmitry Petrov
d66d582f25
Update to origin/master.
...
IrReturn should return 'Unit' for "return without value".
2016-10-18 09:09:40 +03:00
Dmitry Petrov
8551bcf103
Refactor IrWhen.
2016-10-18 09:09:38 +03:00
Dmitry Petrov
f4aee6cab5
Update testData.
2016-10-18 09:09:32 +03:00
Dmitry Petrov
291d535de7
Fix IR generation for string templates containing single entry.
2016-10-18 09:09:30 +03:00
Dmitry Petrov
1c2a676cd6
Make coercion to Unit explicit in IR.
2016-10-18 09:09:30 +03:00
Dmitry Petrov
7ae6c55ddb
IrMemberAccessExpression::getTypeArgument
2016-10-18 09:09:28 +03:00
Dmitry Petrov
4b9c5effd3
Minor: irElement rendering
2016-10-18 09:09:25 +03:00
Dmitry Petrov
90119880c5
IrCatch element.
2016-10-18 09:09:24 +03:00
Dmitry Petrov
001b95473a
Drop 'parent' and 'slot'.
2016-10-18 09:09:21 +03:00
Dmitry Petrov
a8a6477ce5
IrOperator -> IrStatementOrigin
2016-10-18 09:09:21 +03:00
Dmitry Petrov
c699e2d24c
Include declaration origin in testData.
2016-10-18 09:09:19 +03:00
Dmitry Petrov
3fa33b5969
Fix compound assignment on arbitrary expression in LHS
...
(with a convention compound assignment operator defined).
2016-10-18 09:09:17 +03:00
Dmitry Petrov
201d2414bc
Properties declared in primary constructors should have proper accessors in IR.
2016-10-18 09:09:15 +03:00
Dmitry Petrov
5c720845a8
Drop IrPropertyAccessor (and subclasses).
...
Drop IrLocalPropertyAccessor (and subclasses).
Introduce IrField.
2016-10-18 09:09:15 +03:00
Dmitry Petrov
838b639692
IrComposite - block introducing immediate declarations to the surrounding scope.
...
E.g., destructuring declaration is represented as IrComposite.
2016-10-18 09:09:12 +03:00
Dmitry Petrov
e23325b014
Bound callable references.
2016-10-18 09:09:08 +03:00
Dmitry Petrov
0da4c08520
Handle unresolved break/continue expressions as error expressions.
2016-10-18 09:09:08 +03:00
Dmitry Petrov
c0ac607a1d
Additional tests for integer literal type promotion.
2016-10-18 09:09:07 +03:00
Dmitry Petrov
8fc16345e6
Property initializers from primary constructor parameters
...
are generated as property initializer expressions
and should not be repeated in primary constructor.
2016-10-18 09:09:06 +03:00
Dmitry Petrov
4e112b3f88
testData format update: detailed descriptor rendering.
2016-10-18 09:09:04 +03:00
Dmitry Petrov
ceeccfa1b7
Properties without accessors are generated as
...
IrGetBackingField / IrSetBackingField expressions.
2016-10-18 09:09:01 +03:00
Dmitry Petrov
539d7ccf6f
Support configuration directives FULL_JDK, WITH_RUNTIME, WITH_REFLECT in Psi2Ir tests.
2016-10-18 09:08:59 +03:00
Dmitry Petrov
d623c70778
Handle break/continue in loop header (condition for 'while', range for 'for').
2016-10-18 09:08:59 +03:00
Dmitry Petrov
b3866d53cd
Handle arbitrary variable as assignment LHS
...
(e.g., conventional compound assignment for a parameter value).
2016-10-18 09:08:58 +03:00
Dmitry Petrov
4cc5fb7454
Always generate temporary variables for receivers in a property compound assignment
...
(emulate 'resolve' behavior).
2016-10-18 09:08:57 +03:00