Commit Graph

327 Commits

Author SHA1 Message Date
Alexander Udalov 2877314313 Support "::foo" as a short-hand for "this::foo"
#KT-15667 Fixed
2017-09-08 10:59:44 +03: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
Alexey Andreev 63855af026 Raise JS metadata version due to incompatible changes in inliner 2017-09-04 15:33:14 +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 bbf9bf91fc Check language feature support for local and top-level lateinit vars 2017-08-31 11:28:08 +03:00
Alexey Tsvetkov bb1cba67b7 Implement JS IC 2017-08-29 02:24:37 +03:00
Mikhail Glukhikh a086863561 Preliminary: support smart casts on variables in closures
No feature support yet
So #KT-14486 In Progress
2017-08-16 12:33:52 +03:00
Mikhail Glukhikh b2d931fb1f Support smart casts after if (nullable ?: boolean) #KT-8492 Fixed 2017-08-16 12:33:35 +03:00
Mikhail Glukhikh 80b6aaa802 Support smart casts to Type after x as? Type null check #KT-4565 Fixed 2017-08-16 12:33:12 +03:00
e5l 5501cdf049 Add warnings for jsr305 nullable annotations
#KT-19115 Fixed
2017-08-15 11:01:08 +03:00
e5l 746de612ad Move Jsr305State to util.runtime 2017-08-15 11:01:08 +03:00
Alexey Tsvetkov bb2fab5b5d Extract LookupTracker service from IncrementalCompilationComponents
We don't need a `TargetId` to `IncrementalCache` mapping in JS
2017-08-10 21:19:42 +03:00
Dmitry Jemerov b423d58a14 Load JSR-305 annotations for libraries if it's enabled for any module
#KT-19303 Fixed
2017-08-02 15:25:34 +02:00
Alexey Tsvetkov 514635e965 IC should be enabled explicitly by build systems
The change only affects JPS on TeamCity (in Intellij IC system property
is always set explicitly; the same holds for Gradle, Maven).
Previous changes have effectively enabled the new IC (which is now default)
for TC JPS builds, which is undesirable as more RAM is used.
2017-07-31 19:34:59 +03:00
Alexey Tsvetkov 62fdd91947 Remove old IC: remove unnecessary caches 2017-07-31 19:34:58 +03:00
Alexey Tsvetkov 2bd7d12312 Remove old IC: remove IncrementalCompilation.isExperimental 2017-07-31 19:34:58 +03:00
Alexander Udalov 8b149db0ec Drop deprecated KotlinPaths.getRuntimePath, use getStdlibPath instead 2017-07-28 14:16:48 +03:00
Alexander Udalov 4b42f9e071 Move JPS-related kotlin-home detection code to jps-plugin 2017-07-28 14:11:35 +03:00
Alexander Udalov 46a01ec131 J2K PathUtil: convert and prettify 2017-07-28 14:11:35 +03:00
Alexander Udalov 3beb6a86f7 J2K PathUtil: move .java -> .kt 2017-07-28 14:11:35 +03:00
Alexander Udalov 224df7a1ea Change -Xload-jsr305-annotations argument to -Xjsr305-annotations={ignore|enable}
See https://youtrack.jetbrains.com/issue/KT-19229 for a complete
explanation

 #KT-19229 Fixed
 #KT-10942
2017-07-26 11:45:25 +03:00
Alexander Udalov 2f99f6ad34 Refactor AnalysisFlags and their support in IDE
* Support flags with any value (not just Boolean)
* Support all flags by parsing arguments in KotlinFacetSettings, instead
  of manually listing known flags

 #KT-19210 Fixed
2017-07-26 11:45:24 +03:00
Nikolay Krasko fbe16f7b91 Refactoring: delete unused CachedValueProperty class 2017-07-21 15:41:06 +03:00
Dmitry Petrov 891799c853 Generate 'Deprecated' annotation on invisible companion object field
Design decision: if the field for a companion object should have
non-public visibility, generate it with @Deprecated annotation in
language version 1.2.

TODO: generate it with proper visibility in 1.3 and later.

KT-11567 Companion object INSTANCE field more visible than companion object class itself
2017-07-19 17:38:17 +03:00
Alexey Andreev 7edb352aeb Copy stdlib-js source map during JPS build 2017-07-10 12:42:33 +03:00
Alexander Udalov 127cd1295e Disable JSR-305 annotations by default, introduce CLI argument
No package annotations are going to be loaded, and
TypeQualifierDefault/TypeQualifierNickname are no longer recognized by
default. Use the CLI argument "-Xload-jsr305-annotations" to enable this
behavior back

 #KT-10942
2017-07-07 22:08:50 +03:00
Alexey Andreev a0e1bde594 Allow to embed source files into JS source maps 2017-06-26 18:15:28 +03:00
Yan Zhulanow d07fd52c43 SamWithReceiver: Add general-purpose plugin and Gradle/Maven integrations 2017-06-19 20:28:47 +03:00
Alexey Andreev bf21cfd6e0 Use source map remapper in JS inliner 2017-06-07 11:13:55 +03:00
Alexander Udalov a67382fdec Daemon: do not exit with internal error on invalid arguments
Invalid compiler arguments should lead to a compilation error, not
internal error. This has been fixed by splitting the
"parseArguments(...)" call (which does parsing + validation) in
CompileServiceImpl into two calls of parseCommandLineArguments +
validateArguments, and returning with a compilation error if the latter
did not succeed

 #KT-16057 Fixed
 #KT-14848 In Progress
2017-06-06 19:52:02 +03:00
Alexander Udalov 1273ac9647 Remove dependency of module 'descriptors' on 'deserialization' 2017-06-06 14:29:21 +03:00
Mikhail Glukhikh adbece82ef Clear DF info for variables assigned in 'try' #KT-17929 Fixed 2017-05-26 15:39:27 +03:00
Alexander Udalov 965b4199f4 Fix compilation against JRE 9 on JPS
Write the modular JDK (9+) path to the module.xml file passed to the
compiler from the JPS plugin. This path is then recorded in the compiler
configuration in KotlinToJVMBytecodeCompiler.configureSourceRoots. This
is needed because in JPS plugin, we pass "-no-jdk" and thus no JDK home
path was recorded in the compiler configuration in
K2JVMCompiler.setupJdkClasspathRoots. Presence of JDK home path in the
configuration is crucial for JDK 9 support (see
KotlinCoreEnvironment.Companion.createApplicationEnvironment), because
classes there can only be loaded with the special "jrt" file system, not
as .class files in .jar files

 #KT-17801 Fixed
2017-05-24 15:46:57 +03:00
Dmitry Jemerov f72dd75127 Use provided file content in KotlinJsMetadataVersionIndex
#KT-17821 Fixed
2017-05-18 21:02:24 +02:00
Mikhael Bogdanov 0ac23c789e Add diagnostics for default lambda inlining 2017-05-17 10:19:54 +02:00
Dmitry Jemerov 80e17cbe9c Don't crash on non-jar files added to classpath
#KT-17698 Fixed
2017-05-09 09:18:07 +02:00
Alexander Udalov 7f5d87ea17 Rename PathUtil.getJdkClassesRoots to avoid confusion
Two of these methods return roots given a path to the JRE, and the third
one returns roots given a path to the _JDK_.
2017-04-27 20:35:14 +03:00
Zalim Bashorov 9783a31779 Remove kotlin-reflect.jar dependency from util module and move reflectionUtil.kt closer to "clients"
Main goal is get rid of kotlin-reflect.jar from modules what required for minimal compiler.jar which can compile Kotlin only to JS to make it smaller.
2017-04-17 18:18:38 +03:00
Zalim Bashorov 05c3e7e81d Don't export kotlin-reflect form util module and add it explicitly where it's required.
Also, remove kotlin-reflect form container module.

Main goal is get rid of kotlin-reflect.jar from modules what required for minimal compiler.jar which can compile Kotlin only to JS to make it smaller.
2017-04-17 18:18:31 +03:00
Dmitry Jemerov 546040fafd Change AddKotlinLibQuickFix to support adding multiple jars 2017-04-12 10:41:57 +02:00
Dmitry Jemerov aee32e6204 New Kotlin projects and Configure Kotlin adds JRE-specific jars 2017-04-12 10:41:57 +02:00
Dmitry Jemerov 8000989bb8 Fix updating libraries
Use correct order root type for updating jars; correctly find file
in VFS after rename; provide logging instead of exceptions in case
of failure; update library model under write action; locate stdlib
sources under the old name
 #KT-17334 Fixed
2017-04-12 10:41:57 +02:00
Dmitry Jemerov 78844dd4aa Use new path for stdlib sources jar 2017-04-04 11:21:06 +02:00
Dmitry Jemerov f9495aa0d7 Introduce and use KotlinPaths.getStdlibPath()
Also support renaming .jar file when updating an existing library
2017-04-04 11:21:06 +02:00
Alexander Udalov 3b8110f51c Minor, use "use" to automatically close JarFile
JarFile extends Closeable on JDK 8, so we can use "use" here now
2017-04-03 18:05:04 +03:00
Alexander Udalov d440f07111 Use Java 7+ diamond operator in compiler modules 2017-04-03 14:51:15 +03:00
Alexander Udalov 5ebee6ceca Use Java 8 lambdas instead of anonymous classes in compiler modules 2017-04-03 14:49:23 +03:00
Mikhail Zarechenskiy 5750a96b13 Write to configuration files only version without description 2017-03-30 13:27:49 +03:00
Mikhail Zarechenskiy c512453e16 Show LV=1.2 in IDE only in internal mode 2017-03-30 13:27:48 +03:00