Dmitry Petrov
6e1340da82
Introduce 'SuspendFunction$n<...>' types.
2016-12-15 23:57:41 +03:00
Dmitry Petrov
a15d423db4
Support modifiers on types in parser
...
(required for 'suspend' on functional types).
TYPE_REFERENCE element now has MODIFIER_LIST child, which hosts annotations and modifiers for the corresponding type reference.
Annotations and modifiers written before an extension function type are now parsed as annotations and modifiers for the functional type, not the receiver type.
So, '@Ann A.(B) -> C' was '(@Ann A).(B) -> C', and became '@Ann (A.(B) -> C)'.
NB: DSL_SCOPE_VIOLATION testData updated accordingly.
Type projection variance modifiers ('in', 'out') belong to a separate modifier list under corresponding type projection (not under a type reference).
'A<in suspend T>' is 'A<(in (suspend T))>', 'A<suspend in T>' is an error.
In stub builder, create a modifier list node to host annotations and modifiers (none so far; TODO properly serialize/deserialize types with modifiers).
2016-12-15 23:57:41 +03:00
Denis Zharkov
6649f64e9f
Support new coroutine convention in JVM backend
2016-12-15 23:57:40 +03:00
Denis Zharkov
1ab003c029
Support another one coroutine convention in front-end
...
- There will be no `coroutine` keyword for builders
- They accept a special suspend function type instead
(it's return type is straightforward, not Continuation<Unit>)
- Instances of these types may be run with special built-in functions
- These built-ins functions are parametrized
with handleResult/handleException/interceptResume, so these operators
become unnecessary (and controllers too)
NB: `@Suspend` annotation is subject to replace with the `suspend` modifier
on types
2016-12-15 23:32:11 +03:00
Denis Zharkov
66c2333eb5
Drop checks related to 'coroutine' modifier
2016-12-15 23:32:10 +03:00
Denis Zharkov
b1d1128466
Minor. Move createFunctionType to core
...
As it will be used in the type mapper soon
2016-12-15 23:32:09 +03:00
Alexey Andreev
1bcb225afa
JS: fix translation of invoke convention call when it is declared as extension member inside class. See KT-15073
2016-12-15 19:53:37 +03:00
Alexey Andreev
c82f8213b0
JS: extract outer class reference as dispatchReceiver from ResolvedCall, to include it into UsageTracker mechanism. This allows to capture outer class of super class in local classes. See KT-13166
2016-12-15 19:05:34 +03:00
Alexey Andreev
87f4e53544
JS: when translating nested classes of local classes, capture closure variables via outermost local class. See KT-12566
2016-12-15 19:05:34 +03:00
Alexey Andreev
b50bfaf071
JS: add test to prove that KT-14419 is not more reproducible. Add test to prove that extension delegate with extension getValue is translated correctly.
2016-12-15 19:05:33 +03:00
Alexey Andreev
b21f906856
JS: add tests to prove that compiler does not optimize RTTI and safe calls based on type information. Remove corresponding optimization for !! operation. See KT-14033
2016-12-15 19:05:33 +03:00
Alexey Andreev
e6501591fa
JS: serialize type of local anonymous class as its denotable supertype. See KT-14888
2016-12-15 19:05:32 +03:00
Alexey Andreev
b08afb0e93
JS: prohibit overriding external functions with optional parameters by non-external fake functions
2016-12-15 19:05:32 +03:00
Alexey Andreev
e2dab5ab5c
JS: prohibit overriding external functions with optional parameters by non-external functions. See KT-13889
2016-12-15 19:05:32 +03:00
Anton Bannykh
1957ac347a
JS: make enum valueOf() throw if not found.
2016-12-15 17:58:40 +03:00
Mikhail Glukhikh
295360ad3e
Navigation from header to implementation and vice versa #KT-15204 Fixed
2016-12-15 15:50:19 +03:00
Nikolay Krasko
868495437c
Filter out first dependency from module dependencies
2016-12-15 14:33:14 +03:00
Ilya Gorbunov
9acfde7c5a
Revert changes from daac46b since kotlin.Comparator now has lower priority than explicit star-import of java.util.*
2016-12-15 13:39:10 +03:00
Ilya Gorbunov
3bedbfae33
Move kotlin.comparisons.Comparator to kotlin package and remove the former from default imports.
2016-12-15 13:39:10 +03:00
Alexander Udalov
e50b102e89
Treat absence of version in SinceKotlinInfo as infinite version
...
This may be needed in the future to make some declarations erroneous for all
versions of compilers
2016-12-15 11:46:18 +03:00
Alexander Udalov
ede60efda5
Support SinceKotlinInfo for deserialized classes
2016-12-15 11:46:18 +03:00
Alexander Udalov
6393ac5871
Check language version for deprecation via SinceKotlinInfo
2016-12-15 11:46:17 +03:00
Alexander Udalov
5c1adb1258
Serialize SinceKotlinInfo and SinceKotlinInfoTable
2016-12-15 11:46:17 +03:00
Alexander Udalov
feeed98323
Introduce SinceKotlinInfo, load from serialized metadata
...
This is a way for future compilers to cause previous compilers to report
diagnostics on usages of some declarations. Diagnostic can have a message
(and/or error code), level (error, warning, or completely hide the declaration
from the resolution), and Kotlin version, since which the diagnostic should no
longer be reported
2016-12-15 11:46:17 +03:00
Alexander Udalov
212240a008
Collect all deprecations, do not stop on the first found one
...
#KT-15245 In Progress
2016-12-15 11:46:17 +03:00
Alexander Udalov
82703d9cfd
Minor refactoring in deprecationUtil.kt
...
Split getDeclaredDeprecatedAnnotation into two methods for clarity
2016-12-15 11:46:16 +03:00
Alexander Udalov
122c631fcf
Refactor getDeprecation() -> getDeprecations()
...
In subsequent commits, another kind of deprecation is introduced which should
be reported alongside with deprecation by the `@Deprecated` annotation
2016-12-15 11:46:16 +03:00
Ilya Chernikov
d78fc50e90
Fix after review
2016-12-15 07:26:08 +01:00
Ilya Chernikov
f036422ee9
Refactor eval code to avoid compiler (codegen) hangings on various loops inside RW locks
2016-12-15 07:26:08 +01:00
Ilya Chernikov
632dba8228
minor: improve daemon test stability
2016-12-15 07:26:08 +01:00
Ilya Chernikov
fc416476a8
Move invokable parts to JSR223 only, remove unneeded code
2016-12-15 07:26:08 +01:00
Ilya Chernikov
b1cd98f2d5
Refactor and fix script annotation processing
2016-12-15 07:26:07 +01:00
Ilya Chernikov
1cc85df78e
Refactor REPL infrastructure for passing evaluation/invoke wrapper to every eval/invoke function
2016-12-15 07:26:07 +01:00
Ilya Chernikov
cb7f22ffec
Refactor JSR223 to support Compilable interface, drop daemon eval engine and sample, simplify
2016-12-15 07:26:07 +01:00
Ilya Chernikov
b19d61e2f4
Refactor annotation resolving, some tests fixed, more tests needed
2016-12-15 07:26:07 +01:00
Ilya Chernikov
28b01126d9
Improve type boundaries for KotlinScriptDefinition interface
2016-12-15 07:26:07 +01:00
Ilya Chernikov
eb3d8a1a4a
Fix classpah update moment on script dependencies calculations
2016-12-15 07:26:06 +01:00
Ilya Chernikov
83420e26b6
Improve script template not found diagnostics
...
(preliminary, see also TODO)
2016-12-15 07:26:06 +01:00
Ilya Chernikov
c82e91eafe
Implement Invocable on base evaluator and locally-evaluating JSR223 sample engines
...
fixes #KT-14707
2016-12-15 07:26:06 +01:00
Ilya Chernikov
fbd4c6eb61
Implement invokable/invoker interface on the generic repl evaluator, refactor reflection utils on the way
2016-12-15 07:26:06 +01:00
Ilya Chernikov
7a79fff9d6
Put lines history into all data structures returned by repl, refactor storage and passing of the history for that
2016-12-15 07:26:06 +01:00
Ilya Chernikov
125cc6ebfb
Fix compiled line class loading in repl, fixes #KT-14706
2016-12-15 07:26:06 +01:00
Stanislav Erokhin
3600b51d90
Minor. fix test data.
2016-12-14 23:59:38 +03:00
Stanislav Erokhin
457918a6dd
Changed name resolution for dynamic extension. Added annotation DynamicExtension.
2016-12-14 21:36:26 +03:00
Mikhail Zarechenskiy
5b5d09b6b2
Fix test data: rename 'mod' to 'rem'
2016-12-14 15:29:00 +03:00
Mikhail Zarechenskiy
5a829809d9
Add operator 'rem' as extension to BigInteger
...
#KT-14650 Fixed
Note that after this change behaviour of '%' on BigInteger is changed,
now it works like a proper remainder
2016-12-14 15:29:00 +03:00
Mikhail Zarechenskiy
e83568bcf3
Update test data after adding operator rem to builtIns
2016-12-14 15:29:00 +03:00
Mikhail Zarechenskiy
e67543e08e
Revert "Update test data as operator 'mod' became deprecated"
...
This reverts commit 040f4e90ce .
2016-12-14 15:29:00 +03:00
Mikhail Zarechenskiy
42d867b3bf
Support number conversion for binary 'rem' operator
2016-12-14 15:29:00 +03:00
Mikhail Zarechenskiy
62ac91a121
Add operator 'rem' to builtIns
...
Also deprecate operator 'mod'
2016-12-14 15:29:00 +03:00