Commit Graph

168 Commits

Author SHA1 Message Date
Dmitry Petrov a416cddcb2 Generate declarations for FAKE_OVERRIDE members 2017-05-04 09:33:03 +03:00
Dmitry Petrov 4ee1fb9309 Minor refactoring
- Get rid of IrClassImpl usages where IrClass is enough
- Use startOffsetOrUndefined / endOffsetOrUndefined
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 77614a749b Minor: unnecessary overrides in IrBlockImpl 2017-05-04 09:33:03 +03:00
Dmitry Petrov abb687aa7f Introduce IrTypeParameter and IrValueParameter declarations 2017-05-04 09:33:03 +03:00
Dmitry Petrov c6b259c36c IrSymbol interface hierarchy, initial import
"Symbols" are (presumably simpler) alternative to descriptors, tailored
for IR-based back-end implementation.
2017-05-04 09:33:03 +03:00
Alexander Udalov bbdff8c7ce Move DeclarationDescriptor.substitute to separate interface Substitutable
To get rid of pointless/confusing implementations in ModuleDescriptor,
PackageViewDescriptor, TypeParameterDescriptor and others.

Note that there are still implementations that do not make sense, for
example in those subclasses of VariableDescriptor which are not also
subclasses of CallableMemberDescriptor (e.g. ValueParameterDescriptor).
Those can be removed by making CallableMemberDescriptor (instead of
CallableDescriptor) inherit from Substitutable. However, that would
require more changes in the compiler because CallableDescriptor is used
rather often in places where in fact only CallableMemberDescriptor
instances can appear.

Explicit return types and casts are required in some places now because
there's no single non-trivial supertype for
ClassifierDescriptorWithTypeParameters and CallableDescriptor.
Previously it was DeclarationDescriptorWithVisibility, now it's both
that and Substitutable<...>
2017-04-13 14:16:07 +03:00
Mikhail Glukhikh b121bf8802 Cleanup: fix some compiler warnings (mostly deprecations, javaClass) 2017-03-15 17:35:31 +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 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
Igor Chevdar ab3681e164 Package level delegated properties have no dispatch receiver. 2017-03-02 12:33:01 +03:00
Igor Chevdar 3ef612f05a Added dispatch receiver to delegation implementing property 2017-03-02 12:33:01 +03:00
Dmitry Petrov 6046b25f56 Minor: silence that irritating KT-14030 2017-03-01 09:25:38 +03:00
Dmitry Petrov 045a12ddc6 Minor: constructor IrExpressionBodyImpl(IrExpression) 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 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
Ilya Matveev 0759ff7bc2 Override acceptChildren method in IrSetterCallImpl 2017-02-07 18:20:33 +03:00
Alexander Udalov f1cd2ee6fd Introduce PropertyDescriptor.isDelegated, write new flag to metadata
#KT-8384 In Progress
2017-01-23 12:25:34 +03:00
Dmitry Petrov b9f9894310 KT-15677 KT-15775
Update parser & descriptor renderer to handle parenthesized types and function types properly.
Resolve annotations in parenthesized types.

AnnotationsImpl.isEmpty() returned false for targeted annotations only
(e.g., 'fun @receiver:Ann C?.foo()').
Properly keep track of targeted annotations.
2017-01-19 09:53:17 +03:00
Svyatoslav Scherbina bf3b5281a9 ir.tree: add trivial building utils 2017-01-11 14:54:13 +07:00
Svyatoslav Scherbina d0a166ffec psi2ir: move IR building utils to ir.tree 2017-01-11 14:54:12 +07:00
Svyatoslav Scherbina 0189faec2e ir.tree: fix IrTry.transformChildren:
transform `finallyExpression` too.
2017-01-11 14:54:09 +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
Stanislav Erokhin 42440f50dc Remove soft keyword coroutine & isCoroutine from ValueParameterDescriptor. 2016-12-15 23:57:56 +03:00
Stanislav Erokhin 59efedf610 Rename platform to header. 2016-12-13 18:00:00 +03:00
Alexey Andreev ba2443bcb3 Add external property to class and property descriptors 2016-12-08 15:41:38 +03:00
Alexander Udalov ce9691cd2b Support platform/impl modifiers for properties
Do not allow platform properties to have backing fields, initializers, be
delegated, lateinit or const, or have accessors with bodies
2016-11-25 20:50:18 +03:00
Alexander Udalov 6e2ef9b1d2 Add platform/impl soft keywords, add isPlatform/isImpl to MemberDescriptor 2016-11-25 20:50:17 +03:00
Dmitry Petrov 7dce1f438f Inner classes lowering. 2016-10-19 19:13:40 +03:00
Dmitry Petrov b5d81d8e31 Preparations to push to master branch.
Introduce tests-ir-jvm module (for IR-based JVM BE tests).
2016-10-18 09:15:19 +03:00
Dmitry Petrov a93f929615 Minor: IrElementVisitorVoid#visitGetVariable -> visitGetValue 2016-10-18 09:10:19 +03:00
Dmitry Petrov fb5298237a Shared variables lowering. 2016-10-18 09:10:16 +03:00
Dmitry Petrov 5ee2f87c4a Closure conversion: simple tests work. 2016-10-18 09:10:12 +03:00
Michael Bogdanov 0b45655b7b Support exhaustive when 2016-10-18 09:10:02 +03:00
Michael Bogdanov a0d9d24c1f Introduced IrElseBranch 2016-10-18 09:10:01 +03:00
Dmitry Petrov a51efaacc9 Introduce IrGetValue as a replacement for IrThisReference / IrGetExtensionReceiver / IrGetVariable. 2016-10-18 09:09:59 +03:00
Michael Bogdanov 567b174e15 Funther default impl support 2016-10-18 09:09:57 +03:00
Dmitry Petrov fc754e533d Enum classes lowering. 2016-10-18 09:09:55 +03:00
Dmitry Petrov 7950235df3 Lowering for constructors & initializers. 2016-10-18 09:09:52 +03:00
Dmitry Petrov 45c999788a Deep copy for IR elements.
NB: we can transform descriptors during copying.
2016-10-18 09:09:44 +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
Michael Bogdanov fe51c35298 Fix for 'getNthResult' in IfThenElse expression impl 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 16334771ad Minor: comment for IrMemberAccessExpression::getTypeArgument 2016-10-18 09:09:29 +03:00
Dmitry Petrov 7ae6c55ddb IrMemberAccessExpression::getTypeArgument 2016-10-18 09:09:28 +03:00
Dmitry Petrov 89de2a2ebe Drop IrGeneralCall, pull up corresponding members to IrMemberAccessExpression. 2016-10-18 09:09:28 +03:00
Dmitry Petrov b19bcc0587 IrElementTransformerVoid 2016-10-18 09:09:27 +03:00