Dmitry Petrov
b206bf199f
Add type operand symbol for type operator expression
2018-02-28 10:35:13 +03:00
Dmitry Petrov
e89047d2cc
Generate super classes and overridden functions in proper scope
...
Such references require proper scope so that local symbols are bound.
Example:
```
fun <T> outer() {
abstract class ALocal<S : T> {
abstract fun bar()
}
class Local<S : T> : ALocal<S>() {
override fun bar() {}
}
}
```
Here local classes have type parameters with upper bounds depending on
function type parameters, and members overriding members in other local
classes.
2018-02-28 10:35:13 +03:00
Dmitry Petrov
02f01efaac
Update testData
2018-02-28 10:35:13 +03:00
Dmitry Petrov
e5295d0f78
Generate references to overridden declarations as a separate pass
...
NB currently it relies on overriddenDescriptors in a FunctionDescriptor,
thus maybe incorrect for transformed declarations.
2018-02-28 10:35:13 +03:00
Dmitry Petrov
00325ae539
Handle equality checks for 'when' and data classes
2018-02-07 14:30:59 +03:00
Dmitry Petrov
6cb68531ae
Minor: add missing "'"
2018-01-17 12:31:07 +03:00
Dmitry Petrov
fdd000c94f
Update testData to new format
2018-01-17 12:31:07 +03:00
Dmitry Petrov
978661c53d
Do not generate default parameter values for synthetic functions
...
This causes a subtle issue with 'copy' function for data class,
which has parameters with source elements corresponding to
the data class primary constructor parameters: default value expression
for such parameters is generated second time (to be overwritten later),
which creates duplicate bindings if such expression included any
(possibly anonymous) declarations, such as lambdas or anonymous objects.
#KT-18208 Fixed
2017-06-02 10:57:45 +03:00
Dmitry Petrov
30182c38ce
Fix toString and hashCode for array members of data classes
...
Generate them as special intrinsics that would be mapped to proper
platform-specific calls by BEs.
#KT-16945 Fixed
2017-05-26 09:32:29 +03:00
Dmitry Petrov
f5fde2c24f
Dump absent type arguments
2017-05-05 09:59:30 +03:00
Dmitry Petrov
17706d0fb6
Generate parameter declarations for synthetic members of enum classes
2017-05-04 09:33:03 +03:00
Dmitry Petrov
78a601af87
Generate parameter declarations for fake overrides
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
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
1bf6f8fc57
Do not generate separate type parameter declarations for constructors
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
2b48908586
Local delegated properties implementation + some more fixes
2017-05-04 09:33:03 +03:00
Dmitry Petrov
c9777fd79f
Add symbols to references
...
TODO: fix some more 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
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
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
4ba8268a29
KT-16669 Exception in PSI2IR on type alias constructor in supertypes list
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
e2e57e5b6d
KT-16439 Generated methods of data classes have no expression for default arguments
...
Provide default argument expressions for generated 'copy' declaration.
2017-03-01 09:25:38 +03:00
Dmitry Petrov
0f1f354ba6
KT-16486 Strange IR for delegated members
...
Delegated implementations should refer to delegate field:
$this: GET_FIELD <delegate_field> ...
receiver: <this_for_containing_class>
2017-03-01 09:25:38 +03:00
Dmitry Petrov
ee9a174c1f
KT-7897 Do not require to call enum constructor for each entry if all parameters have default values
...
Do not report an error on enum entry without initializer if all parameters have default values
(error is still reported if there is no such constructor, or if the constructor call is ambiguous).
Record resolved call on KtEnumEntry.
NB is the enum entry has a corresponding subclass, we still have to generate the "default" constructor call,
because FE doesn't know about the platform-specific representation of that class and its constructors.
See also KT-14097, KT-15900
2017-01-24 16:59:47 +03:00
Svyatoslav Scherbina
4c3fb9a21f
psi2ir: improve backing field usage generation
...
Also update corresponding tests data.
2017-01-11 14:54:10 +07:00
Dmitry Petrov
d9271b54fb
Fix IR generation: temporary variable in 'hashCode()' for data class should be 'var'
2016-12-23 10:44:14 +03:00
Dmitry Petrov
7dce1f438f
Inner classes lowering.
2016-10-19 19:13:40 +03:00
Dmitry Petrov
a51efaacc9
Introduce IrGetValue as a replacement for IrThisReference / IrGetExtensionReceiver / IrGetVariable.
2016-10-18 09:09:59 +03:00
Dmitry Petrov
608d6a37d2
Some enum-related fixes
...
(NB: testEnumClass3 doesn't work yet, effective modality required for enum class)
2016-10-18 09:09:57 +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
Dmitry Petrov
8551bcf103
Refactor IrWhen.
2016-10-18 09:09:38 +03:00
Dmitry Petrov
1c2a676cd6
Make coercion to Unit explicit in IR.
2016-10-18 09:09:30 +03:00
Dmitry Petrov
4b9c5effd3
Minor: irElement rendering
2016-10-18 09:09:25 +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
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
0c0dac4822
Some additional secondary constructor examples.
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
4eda19b36a
Do not generate constructors for annotation classes.
2016-10-18 09:09:04 +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
28b3ea27f3
Generate explicit call to 'Any()' if no superclass found.
...
Generate call super-constructor calls as IrDelegatedConstructorCall.
2016-10-18 09:08:57 +03:00
Dmitry Petrov
f2e778d2d0
Some more tests.
2016-10-18 09:08:51 +03:00
Dmitry Petrov
42988383e0
Local delegated properties.
2016-10-18 09:08:50 +03:00