Commit Graph

7328 Commits

Author SHA1 Message Date
Alexander Udalov d07b628e0c Support JvmPackageName annotation in JVM back-end
This annotation is currently internal because we only commit to its
support for our own libraries. It will be used to change JVM package
names of declarations in JDK-specific stdlib additions (now called
kotlin-stdlib-jre7/8), both to preserve source compatibility of the old
Kotlin code and to solve the split package problem (KT-19258)
2017-09-13 22:59:03 +03:00
Alexander Udalov 234148518e Temporarily remove isInitialized and tests, but keep the implementation
This is needed because we want the compiler code to stay as much the
same in master and in 1.2 as possible
2017-09-13 22:51:23 +03:00
Alexander Udalov 7d80afbe63 Avoid getting invisible_fake visibility for properties in ExpressionCodegen
Before this change, we were computing the visibility of an inherited
private property setter, and ISE at AsmUtil.getVisibilityAccessFlag
happened ("invisible_fake is not a valid visibility in backend")
2017-09-13 22:49:26 +03:00
Alexander Udalov c6263ac8e6 Support isInitialized intrinsic for lateinit properties
See https://github.com/Kotlin/KEEP/pull/73

 #KT-9327 Fixed
2017-09-13 22:49:26 +03:00
Anton Bannykh 2249675e59 JS: throw exception when accessing uninitialized lateinit property (KT-14964) 2017-09-13 20:16:01 +03:00
Anton Bannykh 49bc9249a1 JS: add support for the ::foo syntax (callable reference with empty LHS) 2017-09-13 20:12:48 +03:00
Anton Bannykh 22dc36a596 JS: enable translation of primitive arrays to TypedArray's by default (KT-17137) 2017-09-13 18:45:19 +03:00
Dmitry Jemerov cc8fbf6078 Store third-party annotations in a separate directory 2017-09-13 17:25:20 +02:00
Alexander Udalov 296638a7c4 Minor, fix test after 60c735f2fd 2017-09-13 18:13:39 +03:00
Zalim Bashorov 30c7f633bd KJS: don't load declarations marked by PlatformDependent annotation
#KT-17450 Fixed
2017-09-13 02:18:43 +03:00
Mikhail Zarechenskiy e16d16fdb7 Do not report diagnostic about annotation with receiver target twice 2017-09-12 17:39:24 +03:00
Mikhail Zarechenskiy 2048a74302 Introduce Language Feature for annotations with wrong targets
#KT-9580 Fixed
2017-09-12 17:39:23 +03:00
Mikhail Zarechenskiy a4766cc293 Report errors on annotations with wrong use site targets
#KT-9580 In Progress
2017-09-12 17:39:22 +03:00
Alexander Udalov 60c735f2fd Do not use deprecated kotlin.reflect API 2017-09-12 15:08:21 +03:00
Alexander Udalov 593d6b7a95 Minor, do not use ".java.kotlin" on KClass instances 2017-09-12 15:02:25 +03:00
Alexander Udalov ac1c7d9a6a Drop Incompatible.NoImpl, fix no "missing impl" on nested class
Header/impl declarations are now considered fully compatible even in the
case when the impl declaration has no "impl" modifier. The error about
no "impl" is now reported separately and only on the impl declaration,
never on the header declaration

 #KT-20087 Fixed
2017-09-12 14:41:11 +03:00
Vyacheslav Gerasimov 89257e6397 Implement light classes for Kotlin scripts 2017-09-12 13:10:38 +03:00
Dmitry Petrov 38d1d06e6e Update modifier applicability tests for LV 1.2 2017-09-12 11:54:04 +03:00
Dmitry Petrov 6b6d1e80f8 Fix enum entry reference from enum entry initialization context
Enum entries are "special" kind of singletons that should be
referenced as a captured 'this' instance inside during entry
initialization, because corresponding static fields in enum class
are not initialized yet.

 #KT-7257 Fixed
2017-09-12 11:00:24 +03:00
Alexey Andreev 37fa45dc34 Add mechanism for type coercion in JS
Use it for char boxing/unboxing and unit materialization.
Possible to use for other purposes, for example, to add type checks
to dynamics.

See KT-18793, KT-17915, KT-19081, KT-18216, KT-12970, KT-17014,
KT-13932, KT-13930
2017-09-11 14:34:34 +03:00
Dmitry Petrov 4428798c61 Change diagnostic message and rename to NESTED_CLASS_DEPRECATED 2017-09-11 09:42:18 +03:00
Dmitry Petrov 66ece54b25 Fix initialization of inner class instances in enum entries
In an inner class of the enum entry class, enum entry reference should
be generated as an outer 'this', not as a enum entry access, because
enum entry itself may be not initialized yet.
2017-09-11 09:42:18 +03:00
Dmitry Petrov 26b2f59b86 Check that resolve works properly with inner classes in enum entries 2017-09-11 09:42:18 +03:00
Dmitry Petrov ba2c3136bb Prohibit non-inner classes in enum entries since 1.3 2017-09-11 09:42:18 +03:00
Dmitry Petrov ea91a0794d Allow modifier 'inner' on a class nested in enum entry class 2017-09-11 09:42:18 +03:00
Dmitry Petrov 488a825349 Specialize diagnostic message for nested classes not allowed 2017-09-11 09:42:18 +03:00
Alexey Andreev c65a79bca4 Fix tests for inline cycle diagnostics in JS 2017-09-08 18:27:42 +03:00
Alexey Andreev c66bc0b0e9 Remap source maps in JS DCE. Improve JS DCE error logging
See KT-19821
2017-09-08 18:27:41 +03:00
Alexander Udalov 2877314313 Support "::foo" as a short-hand for "this::foo"
#KT-15667 Fixed
2017-09-08 10:59:44 +03:00
Mikhael Bogdanov 2fa4c28e0f Properly reorder arguments in anonymous object super class constructor
#KT-18356 Fixed
2017-09-07 15:18:05 +02:00
Mikhail Zarechenskiy 088800d82f Report error about val reassignment via backing field since Kotlin 1.3
Also improve message for current warning

 #KT-16681 Fixed
2017-09-07 12:54:31 +03:00
Mikhail Zarechenskiy 03440210ee Introduce language version 1.3 2017-09-07 12:52:32 +03:00
Mikhael Bogdanov 1cf8ee9433 Don't remove nullability assertions of anonymous object transformation
#KT-19910 Fixed
2017-09-06 17:48:13 +02:00
Alexey Andreev 361d6dfca0 JS: rewrite source map generator to use specialized JSON writer
Fixes problems with string escaping. See KT-20005
2017-09-06 17:55:06 +03:00
Dmitry Petrov 8c5d18c1f2 Tests for boxing optimization on KClass are JVM-specific 2017-09-06 14:20:05 +03:00
Dmitry Petrov 61faa068d4 Do not optimize == for KClasses in redundant boxing elimination
For primitive wrappers such as java.lang.Integer,
  jlc = java.lang.Integer.class
  jlt = java.lang.Integer.TYPE
  !(ljc.equals(ljt))
However, in Kotlin corresponding KClass instances are equal.

 #KT-17748 Fixed Target versions 1.1.50
 #KT-17879 Fixed Target versions 1.1.50
2017-09-06 09:54:36 +03:00
Dmitry Petrov 2b27e64fc8 Improve diagnostics for "not yet supported in inline"
- Tell user what exactly is not supported (e.g., local inline function)
- Reduce diagnostics range to a keyword or an identifier
  where appropriate

 #KT-16223 Fixed Target versions 1.1.50
2017-09-06 09:46:33 +03:00
Mikhael Bogdanov 81a1bf3319 Recalculate max stack on method emitting: optimizations could change it 2017-09-06 08:20:32 +02:00
Mikhail Zarechenskiy a3060f1073 Add test on obsolete issue
#KT-9203 Obsolete
2017-09-05 16:15:18 +03:00
Dmitry Petrov 21cdf9dd5b Add cast to expected type in call-based in-expression generation
#KT-20106 Fixed
2017-09-05 15:32:53 +03:00
Mikhail Zarechenskiy e7449a3584 Fix referencing inner class constructor on an outer class instance
#KT-12796 Fixed
2017-09-05 14:41:44 +03:00
Mikhail Zarechenskiy 4a6f35b9c2 Fix exception on invalid code, don't resolve uninitialized type
#KT-11963 Fixed
2017-09-05 14:41:42 +03:00
Mikhail Zarechenskiy 6d4bb229ac Fix compilation exception where overload ambiguity should be
#KT-16246 Fixed
2017-09-05 14:41:40 +03:00
Mikhail Zarechenskiy ec512d1c8a Add tests on obsolete issues
#KT-11236 Obsolete
 #KT-12399 Obsolete
2017-09-05 14:41:34 +03:00
Alexey Andreev 28c9d274ec JS: prohibit illegal chars on dynamic call site
See KT-19540
2017-09-04 15:35:00 +03:00
Alexey Andreev 834cd1d93d Fix testdata for new JS inliner 2017-09-04 15:33:07 +03:00
Dmitry Petrov 76acd23bd7 Revert "Fix synthetic accessor generation for properties"
This reverts commit 2427b2c
2017-09-01 16:09:29 +03:00
Alexander Udalov 05290c3ed2 Fix AssertionError on incompatible scopes with impl typealias
This has been introduced in 9ecd04f628
2017-09-01 14:47:29 +03:00
Dmitry Petrov 5d44e095c8 Nullability assertions for extension receiver
In Kotlin 1.1 and before, there were no nullability assertions on
extension receivers, because receiver is resolved with NO_EXPECTED_TYPE.
So, if an expression of platform type is passed as an extension receiver
to a non-private function, it would fail with IllegalArgumentException.
However, if the function is private, then we generated no parameter
assertions under assumption that such function can be called from Kotlin
only, and all arguments are checked on the call site. Thus 'null' could
propagate indefinitely.

In Kotlin 1.2, we do the following:
- Generate nullability assertions for expression receivers.
NB nullability assertions are stored for ReceiverValue instances, not
for expressions: given expression can act as receiver in different
calls, each with an expected receiver type of its own.
- Generate nullability assertions for extension receivers of private
operator functions.
NB it still can throw NPE for some particular "optimized" cases, but at
least those nulls would not propagate indefinitely.

This behavior is disabled by an "advanced" command-line option
'-Xno-receiver-assertions'.
2017-09-01 09:49:21 +03:00
Dmitry Petrov 2427b2cc6c Fix synthetic accessor generation for properties
Generate synthetic accessors for property accessors only if the
corresponding methods are accessible in the current context.

 #KT-19306 Fixed Target versions 1.1.5
2017-09-01 09:48:26 +03:00