Commit Graph

48 Commits

Author SHA1 Message Date
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
Alexander Udalov 7febd846e8 Export 'intellij-core' in module 'frontend'
Remove intellij-core from dependencies of modules which already depend
on frontend or any module that exports frontend (such as frontend.java)
2017-06-06 14:29:26 +03:00
Alexey Sedunov 151b512a6c Kotlin Facet: Do not rewrite v2 configuration to latest version
This causes unwanted changes in configuration files
after plugin update
2017-05-22 13:51:07 +03:00
Alexander Udalov be54e4b93b Get rid of coroutinesWarn/coroutinesEnable/coroutinesError
Use a single coroutinesState instead. Change the coroutines state in
some tests from "warn" to "enable"/"error" to test that deserialization
of older config files works ("warn" is the default value, so it wasn't
testing anything here)
2017-04-14 20:07:54 +03:00
Alexey Sedunov 18632c3200 Kotlin Facet: Fix facet creation with non-default JVM target 2017-04-06 18:18:31 +03:00
Alexey Sedunov 6bf23d5e02 Kotlin Facet: Convert paths to OS-independent form
#KT-17223 Fixed
2017-04-04 14:35:12 +03:00
Alexey Sedunov 7c7e41592a Kotlin Facet: KT-16980
Avoid reinitialization of module-level settings on each run of
the analyzer in the absence of Kotlin facet

 #KT-16980 Fixed
2017-03-22 13:36:05 +03:00
Alexey Sedunov 2bb7bdfc3f Kotlin Facet: Fix reading of v1 configuration
Favor language/api version specified in <versionInfo> element
in case it differs from the one in
<option name="_commonCompilerArguments">

#KT-16861 Fixed
2017-03-19 17:19:26 +03:00
Alexey Sedunov 88a394e892 Kotlin Facet: Validate "additional arguments"
Validate consistency of "additional arguments" with respect to settings specified in other UI controls
2017-03-16 03:14:40 +03:00
Alexander Udalov 7a240b63c7 Use LanguageFeature.State enum instead of CoroutineSupport 2017-03-15 11:03:03 +03:00
Alexander Udalov 32826c1686 Introduce LanguageFeature.State, drop coroutines-related pseudofeatures
Previously there were three LanguageFeature instances -- Coroutines,
DoNotWarnOnCoroutines and ErrorOnCoroutines -- which were handled very
awkwardly in the compiler and in the IDE to basically support a language
feature with a more complex state: not just enabled/disabled, but also
enabled with warning and enabled with error. Introduce a new enum
LanguageFeature.State for this and allow LanguageVersionSettings to get
the state of any language feature with 'getFeatureSupport'.

One noticeable drawback of this approach is that looking at the API, one
may assume that any language feature can be in one of the four states
(enabled, warning, error, disabled). This is not true however; there's
only one language feature at the moment (coroutines) for which these
intermediate states (warning, error) are handled in any way. This may be
refactored further by abstracting the logic that checks the language
feature availability so that it would work exactly the same for any
feature.

Another issue is that the difference among ENABLED_WITH_ERROR and
DISABLED is not clear. They are left as separate states because at the
moment, different diagnostics are reported in these two cases and
quick-fixes in IDE rely on that
2017-03-15 11:03:00 +03:00
Alexander Udalov ac530ac49c Move skipMetadataVersionCheck flag to LanguageVersionSettings
This makes it possible to avoid the CompilerConfiguration instance in
injectors, because CompilerDeserializationConfiguration was the only
left component that required it.

LanguageVersionSettings is not a good name for this entity anymore, it
should be renamed in the future
2017-03-15 11:02:58 +03:00
Alexander Udalov 573c6ab5d4 Move JvmTarget to frontend.java, introduce TargetPlatformVersion
Previously JvmTarget was declared in module 'util' which is accessible
for example from 'frontend', which is not very good.

Also add a superinterface named TargetPlatformVersion which is going to
be used in platform-independent injectors in 'frontend' in the following
commits. Use it in one place (LanguageVersionSettingsProviderImpl.kt)
instead of DescriptionAware because TargetPlatformVersion sounds like a
better abstraction than DescriptionAware here
2017-03-15 11:02:56 +03:00
Alexey Sedunov 6b6d7a5030 Configuration: Don't create kotlinc.xml if the settings don't differ from the defaults
#KT-16647 Fixed
2017-03-14 15:33:11 +03:00
Alexey Sedunov 811b8978c2 Kotlin Facet: Escape additional compiler arguments when converting them to string and unescape before parsing
#KT-16700 Fixed
2017-03-09 23:06:38 +03:00
Alexey Sedunov 278cc71c4a Kotlin Facet: Reuse configuration serialization in JPS (previous implementation is not usable after configuration refactoring) 2017-03-09 23:06:18 +03:00
Alexey Sedunov 641a9a7153 Kotlin Facet: Get rid of duplicating data in facet configuration 2017-03-09 23:06:12 +03:00
Alexey Sedunov 330beebb2c Kotlin Facet: Check contradictory values of "coroutine support" option
#KT-16109 Fixed
2017-02-13 14:53:14 +03:00
Alexey Sedunov 4325632b3e Kotlin Facet: Always parse argument string to proper compiler arguments bean
#KT-16137 Fixed
 #KT-16157 Fixed
 #KT-16206 Fixed
2017-02-08 11:56:59 +03:00
Dmitry Jemerov da6640971f Import new Gradle coroutines DSL setting into Kotlin facet 2017-01-28 13:14:39 +01:00
Alexey Sedunov fc9b001ccd Kotlin Facet: Use project settings by default
#KT-15624 Fixed
2017-01-23 15:16:09 +03:00
Alexey Sedunov b35eba0621 Kotlin Facet: Annotate CompilerSettings properties with @JvmField to make them available for copyBean()
#KT-15621 Fixed
 #KT-15623 Fixed
2017-01-23 15:16:08 +03:00
Mikhael Bogdanov 7a27a9d51f Propagate 'CompilerConfiguration' to frontend checkers 2017-01-18 10:23:40 +01:00
Mikhael Bogdanov b6bf53f96f Revert ' Temporary remove JVM_1_8 target from facet settings' 2017-01-13 13:52:54 +01:00
Alexey Sedunov a84275b057 Minor: Rename "Default" platform to "Common" 2016-12-19 18:31:46 +03:00
Alexey Sedunov eac0c9b2ed Kotlin Facet: Add "Use project settings" option 2016-12-19 18:27:47 +03:00
Mikhail Zarechenskiy 2ff04f2bc5 Import kotlin.coroutines property from gradle to facet 2016-12-15 23:58:17 +03:00
Mikhail Zarechenskiy 091756b221 Adapt facet, map coroutine settings on three keys 2016-12-15 23:58:09 +03:00
Alexey Sedunov 9460426d26 Kotlin Facet: Add coroutine support setting 2016-12-15 23:58:08 +03:00
Mikhael Bogdanov facee84020 Temporary remove JVM_1_8 target from facet settings 2016-12-13 14:51:27 +01:00
Alexander Udalov 22e1221c75 Support "default platform" in IDE via facet settings 2016-11-22 18:19:02 +03:00
Alexey Sedunov 4613eed406 Kotlin Facet: Track configuration version 2016-11-22 11:54:07 +03:00
Alexander Udalov 26a6ce9a31 Rename JVMPlatform and JSPlatform and make them nested in TargetPlatformKind
To avoid confusion with JvmPlatform and JsPlatform from frontend.java and
js.frontend respectively
2016-11-11 19:00:12 +03:00
Alexander Udalov d0f31a2bc2 Minor, rename targetPlatformKindKind -> targetPlatformKind 2016-11-11 19:00:11 +03:00
Alexey Sedunov 30d08c989d Kotlin Facet: Use facet configuration to provide language version for IDE analyzer 2016-11-07 20:03:30 +03:00
Alexey Sedunov d0de9dd43c Kotlin Facet: Get rid of copy constructors for compiler arguments/settings and use reflection-based copying instead 2016-11-07 20:03:29 +03:00
Alexey Sedunov a2948a624f Kotlin Facet: Reuse JvmTarget and LanguageVersion in facet configuration 2016-11-07 20:03:28 +03:00
Alexey Sedunov a6dbdbd3e5 Refactoring: Move facet configuration classes to idea-jps-common module 2016-11-07 20:03:23 +03:00
Alexey Sedunov ea13456bba Kotlin Facet: Add compiler settings to facet configuration 2016-10-26 15:03:42 +03:00
Ilya Chernikov ce6966b486 Add settings to compiler to specify templates to load, add templates provider using the settings 2016-08-11 09:08:40 +02:00
Dmitry Jemerov 43a6e13f4b idea: cleanup 'public', property access syntax 2016-01-07 18:12:36 +01:00
Alexander Udalov 2ccd6d54b7 Add kotlin-reflect as a separate library
Exclude in core modules, since they do not have kotlin-reflect.jar in
dependencies when are built in build.xml
2015-12-21 18:46:08 +03:00
Pavel V. Talanov ed218c473a Get rid of 'class object' usages in code and builtins
Replace some comments and library usages as well
2015-03-25 18:28:00 +03:00
Pavel V. Talanov 2a6facaef6 default -> companion: default object -> class object in project code, builtins and libs code 2015-03-17 15:46:48 +03:00
Pavel V. Talanov 9ecf95532e Replace 'class object' with default object in project code 2015-03-10 18:07:46 +03:00
Nikolay Krasko c8c1ce521b Add kotlin runtime to idea-jps-common module dependency
#KT-6826 Fixed
2015-02-26 12:37:32 +03:00
Evgeny Gerashchenko 1f10cbb0d5 Moved constant to idea module and removed redundant dependency. 2015-02-13 21:51:50 +03:00
Evgeny Gerashchenko 1484ce4a46 Renamed and moved module ide-compiler-runner to idea-jps-common.
Motivation: it has only a bunch of constants and a trivial class needed in idea and jps modules.
2015-02-13 21:51:50 +03:00