Commit Graph

42596 Commits

Author SHA1 Message Date
Alexander Udalov afc9d3ef8b Remove idea/src/META-INF/extensions/{kotlin2jvm.xml,kotlin2js.xml}
Keep the EnvironmentConfigFiles enum because its values are used in
determining whether the environment is going to be used for JVM or
non-JVM project analysis, but remove the actual files.

Drop EnvironmentConfigFiles.EMPTY and replace its only usage in
preprocessor with JVM_CONFIG_FILES: it's easier and won't affect
anything
2017-11-15 11:05:15 +01:00
Alexander Udalov 7ace303add Fix ambiguity on callable reference for expect members
Expect members should always lose in resolution to non-expect members,
be it simple calls or callable references. Note that there should be
exactly one actual member for each expect member in correct code, so
both ways to check for expect vs non-expect are correct: either before
signature comparison, or after.

 #KT-20903 Fixed
2017-11-15 11:02:29 +01:00
Ilya Gorbunov 27546546fa Minor: specify explicit name for lambda parameter, use also instead of let 2017-11-15 12:01:22 +03:00
Sergey Ryabov 7fe7b6d6e1 Change FileReadWrite to more idiomatic code 2017-11-15 12:01:22 +03:00
Ilya Gorbunov f4015b48f7 Run configuration for generator: configure-on-demand 2017-11-15 09:17:42 +03:00
Ilya Gorbunov 7c543b6b28 Rewrite array and specialized operations in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov c4ac2548d9 Rewrite Mapping.kt in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov efefa64ac5 Rewrite snapshot and set operations in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov 3b6c5880e2 Rewrite range operations in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov c3b894f041 Rewrite Guards, Numeric, SequenceOps, StringJoinOps in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov d2e1baa9d4 Rewrite Ordering.kt in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov ff336cdf84 Rewrite Generators.kt in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov eb2db85c46 Rewrite Filtering.kt in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov d8455ba765 Rewrite Elements.kt in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov 012d3804f0 Rewrite Aggregates.kt to the new template DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov dd0e04edd5 Switch production generated stdlib sources to the new DSL and remove old DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov db049c0ab6 Introduce deprecated helpers to ease migration 2017-11-15 09:17:42 +03:00
Ilya Gorbunov 9f57a2c0d5 Make generated code ordered same as before
Allow to fix signature for sorting when overriding it
2017-11-15 09:17:42 +03:00
Ilya Gorbunov 31e00efa8f Legacy mode for non-multiplatform stdlib sources 2017-11-15 09:17:42 +03:00
Ilya Gorbunov 4404257329 Improve new stdlib generator DSL
- Add Kotlin/Native platform.
- Rename classes.
- Introduce TemplateGroup and TemplateGroupBase to group template values.
- MemberBuilder: add support for more properties.
2017-11-15 09:17:42 +03:00
Ilya Gorbunov e68a6651d2 Prototype new version of stdlib generator template DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov 9e34e20338 Refactor stdlib generator: extract common types to be reused in new DSL 2017-11-15 09:17:42 +03:00
Ilya Gorbunov dcd0a94d76 Minor: fix extra space in return type of chunked and windowed 2017-11-15 09:17:42 +03:00
Pavel V. Talanov cf2e9c7002 Fix compilation: erroneous import 2017-11-14 20:30:13 +03:00
Pavel V. Talanov 70b22e7f85 Highlighting: never highlight errors for compiled files 2017-11-14 18:29:58 +03:00
Pavel V. Talanov 9db9750e67 Light classes: do not fail when classfile is in src root 2017-11-14 18:29:53 +03:00
Pavel V. Talanov 6667732dd4 Do not hide kotlin class files in source roots
This fixes a problem where file is indexed but querying
    index fails with an exception because file has no PSI

 #KT-21061 Fixed
2017-11-14 18:26:53 +03:00
Pavel V. Talanov 8696b37cdb Minor, tests: make collection synchronized
Attempt to fix flaky test test that use LightClassComputationControl
2017-11-14 17:47:55 +03:00
Denis Zharkov 1f9d56439a Fix KNPE caused by optimizations in control-flow analysis
The problem is that when performing full analysis we do it in
a backward order while result for trivial vals is filled
in a forward one.

It turns out that reversedInstuctions might return a superset of
forward traversed instructions, e.g. in case of dead code in lambda.

At the same time result for trivial vals is constant
for any instruction, thus we can just return its constant value
and use it in the full analysis

 #KT-20895 Fixed
2017-11-14 16:38:28 +03:00
Denis Zharkov 2a0b937aac Revert "Add diagnostic for unexpected KNPE in control-flow analysis"
This reverts commit f24f0017a0.
2017-11-14 16:37:24 +03:00
Denis Zharkov f24f0017a0 Add diagnostic for unexpected KNPE in control-flow analysis
See KT-20895
2017-11-14 16:32:34 +03:00
Pavel V. Talanov ae2b0325a3 Restore and deprecate old ScriptTemplatesProvider EP 2017-11-14 16:30:42 +03:00
Pavel V. Talanov 6fed779782 Reload gradle script definitions
Reloading in the following scenarios:
- Successful gradle sync following a failure to load definitions
- Gradle settings changed in IDE (via settings UI)
2017-11-14 16:30:40 +03:00
Pavel V. Talanov 4906c850af Reload script definitions on compiler settings changes
Provide API to track compiler settings changes
2017-11-14 16:30:37 +03:00
Pavel V. Talanov ef539bd89d Tests: use standard script definition in cli tests by default 2017-11-14 16:30:35 +03:00
Pavel V. Talanov cdfdc1d19b Refactor script definitions loading
Make ScriptDefinitionProvider an interface
    and provide different implementation for cli and IDEA
Rework ide extension point to a simpler interface (ScriptDefinitionContributor)
Move template loading logic into a top level function
Allow script definitions to be reloaded in IDE
2017-11-14 16:30:33 +03:00
Pavel V. Talanov f063254cc1 GradleScriptDefaultDependenciesProvider: better name filter 2017-11-14 16:30:30 +03:00
Pavel V. Talanov df74fb23f8 ScriptDependenciesCache: limit simultaneously cached script count
Do not schedule updates for dependencies of scripts that were not requested
   (opened in the editor or such) for some time
This fixes a problem when vcs updates changing scripts can trigger
   undesired script dependencies updates
   (probable cause of script files never highlighted correctly in some cases)
Refactor: use VirtualFile instead of String and move code from GradleScriptTemplateProvider
2017-11-14 16:30:28 +03:00
Dmitry Jemerov f67e01db1c Generate 'expectedBy' dependency instead of 'implement' (KT-21006) 2017-11-14 14:09:25 +01:00
Vyacheslav Gerasimov 64f29a7bd5 Move KDsl gradleFrameworkSupport and moduleBuilder to gradle.xml
#KT-21236 Fixed Target versions 1.2.20
2017-11-14 14:52:19 +03:00
Ilmir Usmanov f4e180556c Fix assignment codegen for suspend operators plus and plusAssign
KT-16079: Fixed
2017-11-14 14:49:26 +03:00
Mikhail Zarechenskiy fbe274ff09 [NI] Use less specific type for captured type approximation
This is needed to be more compatible with the old NI
2017-11-14 14:40:47 +03:00
Mikhail Zarechenskiy f3ef961be6 [NI] Report error about non-spread parameter from arguments mapper 2017-11-14 13:55:48 +03:00
Mikhail Zarechenskiy 13ee0f8eda [NI] Don't forget to report error about mixing different kinds of args
Also use more safe way to report errors: only if there is corresponding PSI element. This is not very useful for compiler, but in IDE we can get synthetic calls with null psi arguments
2017-11-14 13:54:58 +03:00
Mikhail Zarechenskiy 2aa8ceb005 [NI] Fix state for named arguments in arguments to parameters mapper 2017-11-14 13:54:51 +03:00
Dmitry Petrov 15ac471626 Treat accessors to JvmStatic methods as having no dispatch receiver
#KT-21246 Fixed
2017-11-14 09:59:16 +03:00
Dmitry Petrov db2aad1857 Rewrite correctContainerForLambda using uninitializedClasses 2017-11-14 09:33:28 +03:00
Dmitry Petrov e38bbbfc13 Drop local interfaces support in ExpressionCodegen
Local interfaces are prohibited since 1.0.
2017-11-14 09:33:28 +03:00
Dmitry Petrov 4365084645 Lookup for local variables taking into account uninitialized this
Consider a context with uninitialized this, e.g.:

  fun foo() {
    val x = "..."
    class Local(y: String) : Base(L@{ x + y })
  }

Lambda 'L' is an argument of a super class constructor call.
Here 'this@Local' is not initialized yet. Thus local variables captured
in 'Local' can't be used. Instead, they should be captured by lambda 'L'
itself.

Note that lambda 'L' sees both 'x' and 'y' as local variables that
should be captured.

When in context with uninitialized this (generating arguments for super
type constructor or delegating constructor call), and a variable in
question is not found in the current context, use enclosing local lookup
to determine whether a local variable should be captured by a closure.
2017-11-14 09:33:28 +03:00
Dmitry Petrov ff0a2562e0 Minor: LocalLookup: lookupLocal -> isLocal 2017-11-14 09:33:28 +03:00