Commit Graph

313 Commits

Author SHA1 Message Date
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
Alexander Udalov 12b48f86e7 Do not load error classes in ReflectionTypes
Previously ReflectionTypes.find returned an error class in case a class
is not found in the module dependencies. The problem with this approach
is that each call site should call ErrorUtils.isError on the result and
report an error if needed, in order to stop this type from reaching the
codegen, which can't handle error types.

Now we create a MockClassDescriptor instance instead. It's not an error
class, so it'll be handled correctly in the codegen. Also its scope is
empty and errors are reported on any non-trivial usage (see
MissingDependencyClassChecker), so this approach is not worse than error
classes

 #KT-16484 Fixed
2017-02-28 20:19:58 +03:00
Ilya Matveev 0759ff7bc2 Override acceptChildren method in IrSetterCallImpl 2017-02-07 18:20:33 +03:00
Alexander Udalov e58baa51ae Rename DoubleColonLHS.Expression.isObject -> isObjectQualifier 2017-02-06 19:39:15 +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
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
Mikhael Bogdanov 0a363fd1a5 Introduced test flag: JVM8_TARGET_WITH_DEFAULTS 2017-01-13 13:52:56 +01:00
Svyatoslav Scherbina d9023bdf70 backend: move some JVM lowering to common 2017-01-12 11:56:32 +07:00
Svyatoslav Scherbina 5a5f4fc224 backend: extract common lowering utils 2017-01-12 11:56:31 +07:00
Svyatoslav Scherbina f85538129d backend: introduce common backend context 2017-01-12 11:56:30 +07:00
Svyatoslav Scherbina 2e88dd0675 backend: fix minor bug in LocalFunctionsLowering
extension receiver parameter should be remapped too
(e.g. to support lambda with receiver)
2017-01-12 11:56:29 +07:00
Svyatoslav Scherbina e6c9a709b2 backend: fix minor bug in SharedVariablesLowering 2017-01-12 11:56:28 +07: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 feb0dee563 psi2ir: untie IR building utils from PSI 2017-01-11 14:54:11 +07:00
Svyatoslav Scherbina 4c3fb9a21f psi2ir: improve backing field usage generation
Also update corresponding tests data.
2017-01-11 14:54:10 +07:00
Svyatoslav Scherbina 0189faec2e ir.tree: fix IrTry.transformChildren:
transform `finallyExpression` too.
2017-01-11 14:54:09 +07:00
Alexander Udalov 75a4958144 Introduce ClassDescriptor.getSealedSubclasses
#KT-12795 In Progress
2017-01-10 12:23:25 +03: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
Mikhail Zarechenskiy ef662a5679 Declare intrinsic rem operator for primitives 2016-12-13 16:33:33 +03:00
Alexey Andreev ba2443bcb3 Add external property to class and property descriptors 2016-12-08 15:41:38 +03:00
Mikhail Zarechenskiy 0134b8819b Optimize const vals by inlining them at use sites
#KT-11734 Fixed
 #KT-13570 Fixed
2016-12-05 22:11:33 +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
Michael Bogdanov fd2655fd4a Bridge support 2016-10-27 16:43:02 +03:00
Michael Bogdanov 7989a0ff25 Use original descriptor on delegating to DefaultImpls 2016-10-27 16:43:01 +03:00
Michael Bogdanov 4cbc5cc958 Remove variables from frame on block leaving 2016-10-27 16:43:00 +03:00
Alexander Udalov cdf6567375 Drop TypeConstructor.getAnnotations(), uninherit TypeConstructor from Annotated
The method was unused on TypeConstructor instances, and almost all
implementations returned EMPTY anyway
2016-10-24 15:30:38 +03:00
Dmitry Petrov 4fc135709e Inner classes lowering: remap old constructor parameters. 2016-10-21 10:05:41 +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
Michael Bogdanov 555f3e903e Rebase fixes 2016-10-18 09:10:20 +03:00
Michael Bogdanov 406fbfdba8 Synthetic accessors support 2016-10-18 09:10:20 +03:00
Michael Bogdanov 20c4f47253 Properly lower ImplicitClassReceiver 2016-10-18 09:10:19 +03:00
Dmitry Petrov a93f929615 Minor: IrElementVisitorVoid#visitGetVariable -> visitGetValue 2016-10-18 09:10:19 +03:00
Dmitry Petrov 703110c0e2 Update after rebase on master. 2016-10-18 09:10:18 +03:00
Dmitry Petrov 6c9b8792c7 Minor: cleanup, use PropertyDescriptorImpl.initialize(...) 2016-10-18 09:10:18 +03:00
Dmitry Petrov 8d7c201339 Refactor special descriptors. 2016-10-18 09:10:17 +03:00
Dmitry Petrov 9b1e87ec84 Minor fixes. 2016-10-18 09:10:17 +03:00
Dmitry Petrov a96aac090e Shared variables lowering: skip irrelevant variables. 2016-10-18 09:10:16 +03:00
Dmitry Petrov fb5298237a Shared variables lowering. 2016-10-18 09:10:16 +03:00
Dmitry Petrov fedfd3de16 Suggest names for captured receivers. 2016-10-18 09:10:15 +03:00
Michael Bogdanov 1658e110f2 Support default values for annotation properties 2016-10-18 09:10:15 +03:00
Michael Bogdanov 4b6ddc4a9d Initial annotation support 2016-10-18 09:10:15 +03:00
Michael Bogdanov 0bc3cc5e20 Object, enum processing on delegation generation 2016-10-18 09:10:14 +03:00
Michael Bogdanov 289cc8fed7 Added extension receiver procesing on interface lowering 2016-10-18 09:10:14 +03:00
Michael Bogdanov f0d09288a8 Initial KCallableNameProperty support 2016-10-18 09:10:13 +03:00