Dmitry Petrov
1dbd6453e0
Add more stub generator tests for external dependencies
2017-05-19 14:49:34 +03:00
Dmitry Petrov
ddb2b7508b
Generate property initializer within property scope
2017-05-05 09:59:30 +03:00
Dmitry Petrov
8e84862afa
Generate do-while condition within loop body scope
2017-05-05 09:59:30 +03:00
Dmitry Petrov
fdb4de355c
Use original descriptors to create symbols for callable references
2017-05-05 09:59:30 +03:00
Dmitry Petrov
c2601c947f
Postpone call arguments generation in compound assignment expressions
...
Otherwise RHS is generated twice, causing ISE in symbol binding
2017-05-05 09:59:30 +03:00
Dmitry Petrov
1eb693b8ee
Transform variable-as-function calls for extension functions
...
In the following code example
fun test(f: Any.() -> Unit) = 42.f()
front-end resolves variable-as-function call for 'f' as 'invoke'
with signature 'Function1<Any, Unit>#Any.() -> Unit'.
However, Function1<Any, Unit> has a single 'invoke' method
with signature 'Function1<Any, Unit>#(Any) -> Unit'.
This didn't cause any problems with loosely typed JVM and JS back-ends.
However, in IR with symbols this means a reference to non-existing
declaration.
2017-05-04 09:33:03 +03:00
Dmitry Petrov
0203ba4dff
Use stable order when generating stubs for scope members
2017-05-04 09:33:03 +03:00
Dmitry Petrov
fa4dc26814
Put 'thisReceiver' declaration in class
...
Interfaces also have 'thisReceiver'
2017-05-04 09:33:03 +03:00
Dmitry Petrov
90ec53b3b0
Generate catch-block body within proper scope
2017-05-04 09:33:03 +03:00
Dmitry Petrov
aa515a9e5a
Add test for outer class instance reference from inner class
2017-05-04 09:33:03 +03:00
Dmitry Petrov
a511540aad
Render receivers as 'this@owner: type'
...
Add test for generic inner class with generic outer class.
2017-05-04 09:33:03 +03:00
Dmitry Petrov
2b0d3440ad
Descriptors in calls are substituted,
...
and symbols refer to the original descriptors.
2017-05-04 09:33:03 +03:00
Dmitry Petrov
d7a362b4f6
Binding: all current tests are green.
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
6cefc0ddf3
Infer suspend flag for local delegated property accessors
...
Local delegated property accessors calling suspend operators getValue
or setValue should be suspend functions themselves.
KT-17605 Getter and setter of suspend delegated property are not suspend
2017-05-02 12:52:36 +03:00
Dmitry Petrov
a3985bbdd3
Substitute underlying constructor when substituting type alias constructor
...
KT-17426 Constructor call of typealiased class gets suspicious type arguemnts
2017-04-20 10:20:36 +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
cb61c358ea
Always generate primitive boolean constants as expressions of type 'kotlin.Boolean'.
2017-03-07 11:56:52 +03:00
Dmitry Petrov
1bbbc1ca1c
KT-16684 hashCode doesn't check data class property value of generic type for null
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
4ba8268a29
KT-16669 Exception in PSI2IR on type alias constructor in supertypes list
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
f636ab21f8
Use proper descriptor for (generic) property assignment.
...
Insert IMPLICIT_INTEGER_COERCION only if Int is coerced to an integer type.
2017-03-02 14:25:58 +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
9baaf607a3
KT-16566 Support destructuring declarations for lambda parameter in psi2ir
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
885f397cdd
KT-16535 'provideDelegate' convention is not supported in IR
...
Implement provideDelegate convention support.
NB delegate type now depends on 'provideDelegate' convention resolution.
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
Mikhail Zarechenskiy
6cccad9647
Update year in license and regenerate tests
2017-01-10 12:01:17 +03:00
Zalim Bashorov
1dedb38481
Regenerate tests
2016-11-09 21:41:12 +03:00
Dmitry Petrov
7dce1f438f
Inner classes lowering.
2016-10-19 19:13:40 +03:00
Michael Bogdanov
20c4f47253
Properly lower ImplicitClassReceiver
2016-10-18 09:10:19 +03:00
Michael Bogdanov
b72d7557d1
KClassJavaProperty support
2016-10-18 09:10:13 +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
Michael Bogdanov
f30027b4de
Generate ir-accessors for interface properties
2016-10-18 09:09:53 +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
663eb21990
Coerce loop body to Unit.
2016-10-18 09:09:31 +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
c4391ebce5
Minor: add test for suppressed error.
2016-10-18 09:09:18 +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
1a3dedaf1c
Minor: add test for primary constructor default parameter values.
2016-10-18 09:09:16 +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
4e270ef487
Store file-level annotations in IrFile (should be on some descriptor, really).
2016-10-18 09:09:09 +03:00
Dmitry Petrov
e23325b014
Bound callable references.
2016-10-18 09:09:08 +03:00