Alexander Udalov
fe2251bfca
Run classifier usage checkers on function types
2018-08-03 18:03:52 +02:00
Natalia Selezneva
f71269009a
Refactoring: use KtScript.scriptDefinition instead of KotlinScriptDefinitionProvider.findScriptDefinition if possible
2018-08-03 15:25:35 +03:00
Ilya Gorbunov
2a598e0ac4
Replace ReadOnly/Mutable usages in the compiler
...
Replace ones from org.jetbrains.kotlin package with new annotations from kotlin.annotations.jvm.
No need to copy them to compile kotlin-reflect anymore.
Then simplify reflect project more: no sources — no need to pack its direct output.
2018-08-03 09:37:38 +03:00
Alexander Udalov
0355746304
Implement OpenAddressLinearProbingHashTable.entries for debug when needed
...
Otherwise it's very difficult to view the contents of BindingContext in
debugger views
2018-08-02 18:36:22 +02:00
Ilmir Usmanov
0c867b4804
Disable callable references to suspend functions in 1.2
...
#KT-25604: Fixed
2018-08-02 18:55:49 +03:00
Alexander Udalov
9babd90999
Support default arguments and varargs for callable references
...
#KT-8834
#KT-19869
#KT-25514
2018-08-01 16:26:06 +02:00
Mikhail Zarechenskiy
acd5b62148
Introduce limited constant conversions for Kotlin/Native
...
#KT-25320 Fixed
2018-07-29 04:32:32 +03:00
Dmitry Savvinov
724b7bf363
Minor: rename and refactor contract-related PSI checks in ktPsiUtil
2018-07-27 16:59:23 +03:00
Dmitry Savvinov
b943140f3a
Move purely PSI checks of contract presence to ktPsiUtil.kt
2018-07-27 16:59:23 +03:00
Natalia Selezneva
0750de73e1
Distinguish exceptions about unknown module info
2018-07-25 15:30:49 +03:00
Dmitry Petrov
df6d4f358a
KT-22274 report warning on labels that can't be referenced
...
Labels are meaningful only if they can be referenced by 'break',
'continue', or 'return' expressions.
2018-07-25 12:08:20 +03:00
Dmitry Petrov
6fb913a463
KT-22274 report error/warning on incorrect return target label
2018-07-25 12:08:20 +03:00
Denis Zharkov
ac6874c221
Hide deprecated overload LanguageSettingsProvider::getLanguageVersionSettings
...
It's necessary only for binary compatibility
After recompilation it's expected to be resolved to an overload
with default parameter
2018-07-24 14:09:54 +03:00
Ilmir Usmanov
fa9653c3d2
Deserialize experimental coroutines as suspend functions/types
...
but deprecate them for now.
Promote stub version.
#KT-25623: Fixed
2018-07-23 21:52:17 +03:00
Dmitry Petrov
d61a3c158e
Fix ProjectImpl leak in PatternMatchingTypingVisitor
2018-07-23 16:05:47 +03:00
Denis Zharkov
56a87ec98e
Restore method broken in f72aa78eec
...
Otherwise plugin compatibility tests are failing
2018-07-23 10:36:31 +03:00
Mikhail Zarechenskiy
f8d19718c8
Fix exception on trying to evaluate red code with inline classes
...
#KT-25600 Fixed
2018-07-20 13:58:35 +03:00
Mikhail Zarechenskiy
17243c08c1
Forbid lateinit variables of inline class types
...
Proper support of lateinit inline class values will be added later,
see #KT-23814
#KT-25603 Fixed
2018-07-20 13:58:33 +03:00
Denis Zharkov
4e7718bfff
Minor. Extract many properties to ImportResolutionComponents
2018-07-20 11:27:08 +03:00
Denis Zharkov
0b2fde3886
State on types level that forcing imports works only for non-default
2018-07-20 11:27:08 +03:00
Denis Zharkov
79e776e9d7
Drop KtImportsFactory as it became unused after previous commit
2018-07-20 11:27:08 +03:00
Denis Zharkov
ec23695f77
Avoid creating fake PSI for default imports
...
#KT-13860 Fixed
2018-07-20 11:27:08 +03:00
Denis Zharkov
f72aa78eec
Fix libraries analysis for case of isReleaseCoroutines feature enabled
...
#KT-25466 In Progress
2018-07-19 16:19:04 +03:00
Dmitry Savvinov
76c651421b
Deprecate visibility of static members inherited from Java
...
Now they are not visible by short name through companion objects, just
like classifiers in KT-21515
^KT-25333 In progress
2018-07-19 13:32:38 +03:00
Alexander Udalov
871b896a21
Add internal compiler argument to change metadata version
...
Will be used in tests to check how we behave on binaries produced by a
"future" compiler
2018-07-18 17:59:37 +02:00
Dmitry Petrov
5767f84c0e
Restrict retention for annotations with target EXPRESSION
...
#KT-13762 Fixed
2018-07-18 14:21:03 +03:00
Alexander Udalov
bca3e1b95b
Restore getDefaultImports for compatibility with an external plugin
...
(see ce34deb9af )
2018-07-17 12:48:43 +02:00
Mikhail Zarechenskiy
b6db8971e4
Warn about annotations that targets non-existing accessors
...
#KT-15453 In Progress
2018-07-17 00:22:53 +03:00
Alexander Udalov
ce34deb9af
Delete DefaultImportProvider, refactor TargetPlatform.defaultImports
2018-07-16 13:45:11 +02:00
Alexander Udalov
1f0fb4823f
Simplify DefaultImportProvider, introduce "low priority imports"
...
Previously, packages `java.lang` and `kotlin.jvm` were imported on JVM
by default on the same rights, causing problems when the same classifier
existed both in `java.lang` and `kotlin.jvm`. Since the only known case
of such conflict were type aliases to JVM classes, the corresponding
classes (expansions of those type aliases) were manually excluded from
default imports. This made the code in DefaultImportProvider complicated
and resulted in multiple problems, regarding both correctness and
performance (see 82364ad3e5 , a9f2f5c7d0 , dd3dbda719 ).
This change adds a new concept, a "low priority import", and treats
`java.lang` as such. Since these imports are now separated from the rest
of default imports in LazyImportScope via secondaryClassImportResolver,
conflicts between classifiers are handled naturally: the one from
`kotlin.jvm` always wins (unless the one from `java.lang` is imported
explicitly, of course). This approach is simpler, safer and does not
require any memory to cache anything.
Skip ResolveToJava.kt test for javac-based resolve; it now fails because
of a weird issue which I didn't have time to investigate (this is OK
because it's a corner case of an experimental functionality)
2018-07-16 13:45:11 +02:00
Alexander Udalov
dcbb8045bd
Disallow function types with big arity on JVM if LV < 1.3 or API < 1.3
...
The implementation is a bit obscure because this worked on JS since
Kotlin 1.0 and we should not break that; however, on JVM, a diagnostic
will be reported with old language/API version
#KT-25241 Fixed
2018-07-16 10:41:27 +02:00
Ilmir Usmanov
6ba2baa9da
Deserialize constructors and properties with version requirement 1.3
...
if they have suspend function type in their descriptors.
Also, review fixes.
#KT-25256: Fixed
2018-07-11 14:20:46 +03:00
Ilmir Usmanov
c460593b7d
Forbid coroutines in language version is 1.3 and api version is less
2018-07-11 14:20:45 +03:00
Ilmir Usmanov
cbb81a343c
Minor. Move experimental warning disabling to appropriate places.
2018-07-11 14:20:44 +03:00
Ilmir Usmanov
524cc3ffe4
Forbid old coroutineContext deserialization. Fix suspend function deserialization
2018-07-11 14:20:43 +03:00
Mikhail Zarechenskiy
2be08f4d60
[NI] Fix exception, recorded type for function statement can be null
...
See `checkStatementType`, we return `null` to reduce count of errors.
Also, note that named function which is used as last statement in lambda
doesn't coerce to Unit, this is a separate bug and will be addressed later,
see #KT-25383
#EA-121026 Fixed
2018-07-10 17:41:17 +03:00
Alexander Udalov
2cb4b7c6d4
Extract MetadataPartProvider out of PackagePartProvider
2018-07-10 15:16:49 +02:00
Alexander Udalov
e25bc2865f
Remove PackagePartProvider from ResolverForProjectImpl
...
To be able to move it to JVM-specific modules, and to provide a
replacement for common module analysis
2018-07-10 15:16:49 +02:00
Ilya Chernikov
9549736d35
Fixes after review
2018-07-10 08:43:52 +02:00
Ilya Chernikov
f39c6f3b7a
Drop half-backed support of "dynamic" annotations on scripts...
...
leaving it in the history so it could be restored and finished, if needed
2018-07-10 08:43:51 +02:00
Ilya Chernikov
0f46f62232
Add script class annotations generation from the base class
2018-07-10 08:43:51 +02:00
Ilya Chernikov
9453834fb1
Create proper constructor in script descriptor
...
allows to resolve calls to scripts in compiler (but not in the IDE yet)
Some refactorings on the way
2018-07-10 08:43:50 +02:00
Mikhail Zarechenskiy
9b6e8fa5d1
Do not recreate compile time initializer to avoid type info loosing
...
When we resolve arguments of annotation, expected type of parameters can
be unknown. Therefore, if we'll try to load constants without expected type,
info about unsigndness will be lost. For primitives it worked because we
can differ type by its value
2018-07-09 20:19:25 +03:00
Dmitry Savvinov
2783e9939b
Fix internal-visibility mangling in IDE
...
Collect module name properly from facets settings, using CLI arguments
which define module name ('-module-name' on JVM and Common,
'-output-file' on JS).
^KT-23668 Fixed
2018-07-09 18:50:50 +03:00
Denis Zharkov
170086250b
Support new Continuation API in JVM BE
...
#KT-24863 Fixed
2018-07-09 15:27:19 +03:00
Mikhail Zarechenskiy
6dc36055b8
Make diagnostic about redundant spread in @Foo(s = *[A]) more clear
2018-07-06 15:54:23 +03:00
Mikhail Zarechenskiy
c032a02373
Prohibit assigning single elements into varargs in named form
...
#KT-20588 Fixed
#KT-20589 Fixed
2018-07-06 15:23:31 +03:00
Alexander Udalov
959c2f4843
Get rid of split packages in descriptors, descriptors.jvm, deserialization
...
Also move some other files to related packages and reformat moved files
2018-07-06 14:08:35 +02:00
Ilmir Usmanov
4e8cc53962
Minor: pass suspend flag to lambda's copy
2018-07-05 15:09:00 +03:00
Ilmir Usmanov
28ad498956
Use AnonymousFunctionDescriptor for suspend callable references
...
Also use it for local suspend functions, which allows us to remove hack
with dropSuspend.
Regenerate tests.
2018-07-05 15:08:49 +03:00