Commit Graph

381 Commits

Author SHA1 Message Date
Dmitry Petrov acefd0d891 Minor refactor and fix in Scope constructors 2017-05-04 09:33:03 +03:00
Dmitry Petrov 54294eaaa7 Minor fix and deprecation in DeepCopyIrTree 2017-05-04 09:33:03 +03:00
Dmitry Petrov 4dd199fedf OldDeepCopyIrTree --> DeepCopyIrTree (for migration) 2017-05-04 09:33:03 +03:00
Dmitry Petrov d5fb0f3f32 Minor: simplify code in generateEnumConstructorCallOrSuperCall 2017-05-04 09:33:03 +03:00
Dmitry Petrov 5ec9cb3171 OldDeepCopyIrTree: old DeepCopyIrTree working with new IrElement hierarchy 2017-05-04 09:33:03 +03:00
Dmitry Petrov b53807ab83 Drop IrBuiltinsOperatorsBuilder 2017-05-04 09:33:03 +03:00
Dmitry Petrov de7b7ce6d5 Generate anonymous initializer body in separate scope 2017-05-04 09:33:03 +03:00
Dmitry Petrov 9c3387e174 Deprecate IrMemberFunctionBuilder 2017-05-04 09:33:03 +03:00
Dmitry Petrov 6f2c8140cf IrDelegatingConstructorCall should have substituted descriptor 2017-05-04 09:33:03 +03:00
Dmitry Petrov 6e79709ef1 Simplify helper methods in SymbolTable auxiliary classes 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 57b2a4461c Call IrSymbol.bind in declaration constructors 2017-05-04 09:33:03 +03:00
Dmitry Petrov 208bf5c667 Bind declaration symbols in DeepCopyIrTree.
Check that symbols are bound.
2017-05-04 09:33:03 +03:00
Dmitry Petrov a840cf7643 Fix source range tests: support "undefined" offsets 2017-05-04 09:33:03 +03:00
Dmitry Petrov 40e09a39c1 Fix prototype JVM BE tests 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 00e4accb7b Add 'isBound' property to IrSymbol 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 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 209864e6a3 Minor: fix IrFunctionImpl#accept 2017-05-04 09:33:03 +03:00
Dmitry Petrov 7289903fa5 Introduce SymbolTable as a symbol factory and unbound symbols tracker 2017-05-04 09:33:03 +03:00
Dmitry Petrov f96a21e899 Redo IrSymbol as a light-weight declaration reference
Strip it of any "useful" information but a reference to the corresponding
symbol owner (file or a declaration).
TODO: add that useful information to declarations.

NB not all IrDeclarations have IrSymbols (IrProperty doesn't - at least now).
2017-05-04 09:33:03 +03:00
Dmitry Petrov b817638851 Add IrSimpleFunction : IrFunction
NB can't make 'override val descriptor: SimpleFunctionDescriptor' there,
because there are quite some FunctionDescriptors that are not
SimpleFunctionDescriptor, but actually belong to this category.
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 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 03b664febd Insert implicit casts for default parameter values in IrValueParameter 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 38ea9986ab Make KotlinType.isError extension instead of member 2017-04-26 18:10:49 +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
Dmitry Petrov 2a97fb17ba Fix source information mapping in PsiSourceManager
Add tests for source information mapping

KT-17108 source information corrupted on PSI -> IR transformation
2017-03-29 13:03:38 +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
Ilya Gorbunov dce0da68c6 Cleanup: post-cleanup after deprecation cleanup in compiler
Replace `takeIf { !expr }` with `takeUnless { expr }`.
Cleanup redundant parethesis as in `listOf((expr))`.
Replace `listOf(expr)` with `expr.let(::listOf)` where the former caused significant indentation change.
2017-03-23 16:48:38 +03:00
Mikhail Glukhikh b121bf8802 Cleanup: fix some compiler warnings (mostly deprecations, javaClass) 2017-03-15 17:35:31 +03:00
Mikhail Glukhikh d0cc1635db Cleanup: apply "Use synthetic property access syntax" 2017-03-15 16:13:40 +03:00
Igor Chevdar 10ea2883f7 Supported KProperty2 and KMutableProperty2 for delegated properties
Consider this code:
object Delegate {
    operator fun getValue(t: Any?, p: KProperty<*>): String {
        return ""
    }
}

class A {
    val String.ext by Delegate
}

then the type of <p> is KProperty2 (it has 2 receivers).

Test fix + review fixes
2017-03-15 12:20:57 +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 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 68fab55251 Minor: cleanup unused imports 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 e4683a1e9f KT-16666 IMPLICIT_INTEGER_COERCION expression should have non-nullable type 2017-03-07 11:56:52 +03:00