Ilya Chernikov
d6590d4fa3
Scripting examples refactoring
2018-09-06 19:17:43 +02:00
Ilya Chernikov
f159a686df
Fix compiled script caching interface
2018-09-06 19:17:42 +02:00
Ilya Chernikov
d785b7e4c5
Extract urls from any classloader that has getUrls(): List<URL> method
...
via reflection, e.g. IDEA platform UrlClassloader. This fix allow
kotlin JSR223 host for IDEA to extract classpath from the environment
properly (with appropriate fix on IDEA side as well).
2018-08-31 15:18:56 +03:00
Ilya Chernikov
fd0eb6ee34
Implement support for class literals as annotation arguments...
...
on deserialization and reflection
2018-08-31 15:17:51 +03:00
Ilya Chernikov
01eca8bac8
Clean up properties collection
2018-08-23 09:51:53 +03:00
Ilya Chernikov
c2e6c0ed49
Rename ScriptingEnvironment to ScriptingHostConfiguration
2018-08-23 09:51:53 +03:00
Ilya Chernikov
2fe5f78921
Rename ScriptEvaluationEnvironment into ScriptEvaluationConfiguration
2018-08-23 09:51:53 +03:00
Ilya Chernikov
bb22dadc1e
Rearrange compilation related API
2018-08-23 09:51:53 +03:00
Ilya Chernikov
bd8f2a81e9
Rename ScriptDefinition to ScriptCompileConfiguration
2018-08-23 09:51:53 +03:00
Ilya Chernikov
98c0a3bdaa
Optimize script base class loading
2018-08-23 09:51:53 +03:00
Ilya Chernikov
d2195fc080
Fix default script definition
2018-08-23 09:51:53 +03:00
Ilya Chernikov
02431e4562
Fix build with proguard by removing unneeded library dep
2018-08-23 09:51:53 +03:00
Ilya Chernikov
da2b60ffa6
Fix discovery tests after refactoring
2018-08-23 09:51:53 +03:00
Ilya Chernikov
acb0f6c6a9
Remove ScriptCompileConfiguration as separate entity, refactor pieces accordingly
2018-08-23 09:51:53 +03:00
Ilya Chernikov
bda8089004
Fix asm annotations loading after annotations refactoring
2018-08-23 09:51:53 +03:00
Ilya Chernikov
2bf458d970
Drop unused files from removed project
2018-08-23 09:51:53 +03:00
Ilya Chernikov
ab63d59a56
Refactor definition keys
2018-08-23 09:51:53 +03:00
Ilya Chernikov
dbee426647
[minor] use java reflection in some places instead of kotlin one
2018-08-23 09:51:53 +03:00
Ilya Chernikov
1ea66e56c2
Fix annotations calculation in the bridge resolver
2018-08-23 09:51:53 +03:00
Ilya Chernikov
04ffe7754e
Refactoring properties collection after review
2018-08-23 09:51:53 +03:00
Ilya Chernikov
74f8a541c0
Grand refactoring of the scripting DSL + many minor usability refactorings around it
2018-08-23 09:51:53 +03:00
Ilya Chernikov
45eaca1290
Add diagnostics chaining
2018-08-23 09:51:53 +03:00
Ilya Chernikov
3fb3aa5ad1
Setup props once, fix initialization problem
2018-08-23 09:51:53 +03:00
Ilya Chernikov
c41717d03b
Make definition a part of the basic hosts, simplify usages
2018-08-23 09:51:53 +03:00
Ilya Chernikov
70ec004aaa
Sorting default jvm props and basic implementations
2018-08-23 09:51:53 +03:00
Ilya Chernikov
fe2a11142e
Renaming, commenting sample
2018-08-23 09:51:53 +03:00
Ilya Chernikov
3629583942
Add overridable method "setup" for defining properties
2018-08-23 09:51:53 +03:00
Ilya Chernikov
1de37ca765
Make KotlinScript annotation accepting all params needed to define a script
2018-08-23 09:51:53 +03:00
Ilya Chernikov
dafbd59707
Add shorter aliases for properties
2018-08-23 09:51:53 +03:00
Ilya Chernikov
df870b47b8
Add helpers for jvm dependencies from context
2018-08-23 09:51:53 +03:00
Ilya Chernikov
100b908a94
Add properties builders to the dsl, implement a builder for refineConfiguration
2018-08-23 09:51:53 +03:00
Ilya Chernikov
e5e1b8d100
Improve generic DSL
2018-08-23 09:51:53 +03:00
Ilya Chernikov
7a621405ae
Add generic properties builder dsl, convert maven example to it
2018-08-23 09:51:53 +03:00
Ilya Chernikov
d0ed86c11c
Add REPL interfaces to scripting API
2018-08-23 09:51:53 +03:00
Ilya Chernikov
5ca4a21edf
Convert evaluator interface to function
2018-08-23 09:51:53 +03:00
Ilya Chernikov
9b7eeebaaa
Convert compiler interface to function
2018-08-23 09:51:53 +03:00
Ilya Chernikov
cf2162c445
Refactor properties
2018-08-23 09:51:53 +03:00
Ilya Chernikov
904917c194
Make script definition a property bag directly
2018-08-23 09:51:53 +03:00
Ilya Chernikov
8953bba47c
Pass scripting (host) environment independently from properties/configuration
2018-08-23 09:51:53 +03:00
Ilya Chernikov
91e6c0b77c
Remove evaluator from script definition, simplify interface
2018-08-23 09:51:53 +03:00
Ilya Chernikov
e61ba1fd70
Replace dedicated configurator with definition properties + refine fun
2018-08-23 09:51:53 +03:00
Ilya Chernikov
a54675abe7
Clean and fix new scripting API
2018-08-23 09:51:53 +03:00
Ilya Chernikov
2a4cef3ac2
Avoid "Failed to initialize native filesystem for Windows" warning from the platform on script compilation
2018-08-17 09:49:46 +02:00
Ilya Chernikov
ac65aebb19
Direct mapping of script implicit receivers and env vars to parameters
2018-08-16 15:13:00 +02:00
Ilya Chernikov
e1ee31b4ce
Use linked hashmap in properties dsl - preserving order
2018-08-16 15:13:00 +02:00
Ilya Chernikov
a3d719785c
Drop exception/stacktrace from logging warning if a script template is not found in the classpath
...
reducing clutter in logs and console
#KT-24754 fixed
2018-08-06 13:58:49 +02:00
Ilya Chernikov
f2395bac2f
Use script compiler options to calculate target platform in IDE
...
#KT-25822 fixed
2018-08-06 10:41:41 +02:00
Ilya Chernikov
f71909ee73
Fix classpath calculation for scripts, e.g. in JSR-223 setting
...
#KT-25814 fixed
2018-08-01 13:09:05 +02:00
Ilya Chernikov
a61de052c7
Do not throw on incompatible cli scripting plugin
...
More reliably fixes #KT-24946, #KT-24438 and alike
2018-07-18 15:15:41 +02:00
Ilya Chernikov
70eaa0ec75
Cleanup annotations in script-util:
...
remove unused targets and runtime retention
2018-07-18 13:11:32 +02:00
Ilya Chernikov
903e613bdd
Fix script templates tests after updating definitions selection logic
2018-07-10 08:43:52 +02:00
Ilya Chernikov
b979f3dc52
Fix testdata
2018-07-10 08:43:52 +02:00
Ilya Chernikov
b83948f241
Drop support of KOTLIN_HOME environment variable in the command-line compiler
...
it is proved to be fragile and seems unnecessary at the moment
2018-07-10 08:43:52 +02:00
Ilya Chernikov
9549736d35
Fixes after review
2018-07-10 08:43:52 +02:00
Ilya Chernikov
5d597eb382
Fix configurations chaining in the script compiler
2018-07-10 08:43:52 +02:00
Ilya Chernikov
92d4d986c8
Take path to scripting plugin libs only from compiler jar path...
...
ignoring all "kotlin home" settings, since we need to load a compatible
plugin. Fixes #KT-24946
2018-07-10 08:43:51 +02:00
Ilya Chernikov
ec58929e39
Allow multiple same jsr305 options in the command-line
...
do not report duplicate jsr305 entries if options are the same
2018-07-10 08:43:51 +02:00
Ilya Chernikov
563e4c9e57
Add kts to supported file extensions to the DirtySourceFilesHolder as well
...
allows jps to compile scripts along with sources,
finally fixes #KT-22611
2018-07-10 08:43:51 +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
dee141b26b
Add script constructor annotations inheritance
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
edf13c022e
Refactor script definitions loading and discovery:
...
Improve logic, code reuse and readability
Add support for more corner cases
Improve reporting
Add definitions loading test
2018-07-10 08:43:51 +02:00
Ilya Chernikov
fbbfe600ec
Fix list of script definitions recognized by the asm-based loading:
...
fix of the previous fix to #KT-24926
2018-07-10 08:43:50 +02:00
Ilya Chernikov
199c3bce40
Fix explicit custom scripting definitions choice logic:
...
add standard script def after custom defs are processed
2018-07-10 08:43:50 +02:00
Ilya Chernikov
e17c36cf12
Improve automatic scripting plugin picking logic
2018-07-10 08:43:50 +02:00
Ilya Chernikov
4812fcf1ad
Fix script definition discovery logic:
...
for cases when directory-based dependencies are passed and directories
with resources are different from directories with classes
Significant refactoring to make code prettier
2018-07-10 08:43:50 +02:00
Ilya Chernikov
56e9bfcd62
Fix default configuration refinement in scripts
2018-07-10 08:43:50 +02:00
Ilya Chernikov
befa94689a
Return script instance from the evaluation in the basic jvm evaluator
2018-07-10 08:43:50 +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
Ilya Chernikov
db73ed1d0c
Add 1.2.51 issues to changelog
2018-07-04 11:42:47 +02:00
Ilya Chernikov
7bff5e3ce7
Add missing tests dependencies on the renewed kotlin-scripting-idea plugin
2018-06-25 08:06:20 +02:00
Ilya Chernikov
1fbece9e7d
Clean scripting plugin options and classpath on importing from gradle
...
should prevent problems that may appear if JPS will try to load
gradle scripting subplugin
(cherrypicked with update from 1.2.50)
2018-06-25 08:06:20 +02:00
Ilya Chernikov
29adf09b7e
Add test with other annotation, tests fix of #KT-2496
2018-06-15 12:01:49 +02:00
Ilya Chernikov
cf294b57f0
Update changelog with changes in 1.2.50
2018-06-14 12:02:40 +02:00
Ilya Chernikov
3171968efc
Fix native-platform repo after it was suddenly moved in the gradle repo
2018-06-01 17:01:35 +02:00
Ilya Chernikov
bacc2079ed
Fix/workaround lazy lcript definition test and related scenarios
2018-05-28 22:10:56 +02:00
Ilya Chernikov
6fdb8746de
Fixes after review
2018-05-28 22:10:56 +02:00
Ilya Chernikov
6218b2bcf6
Fix custom script codegen test: add missing classpath entries
2018-05-28 22:10:56 +02:00
Ilya Chernikov
a46dd5b30e
Avoid using reflected types in the scripting API
...
since it causes numerous classloading issues. Using the wrapping types
and reload them in the proper context when needed.
Note: this version supports only classes, but the wrapping type could
be extended to support other types in the future.
+ numerous fixes related to proper loading and handling of the templates.
2018-05-28 22:10:56 +02:00
Ilya Chernikov
4d65f0478b
Move scripting codegen code from tests-common to compiler tests
...
getting rid of dependencies on scripting in the tests-common
2018-05-28 22:10:56 +02:00
Ilya Chernikov
92d848b6e6
Fix scripting plugin commandline processing
2018-05-25 09:51:04 +02:00
Ilya Chernikov
705faa4792
Add lazy discovery test
2018-05-25 09:51:04 +02:00
Ilya Chernikov
612de2e342
Fix the invalid code after "Fix order of jars" commit
2018-05-16 07:24:21 +02:00
Ilya Chernikov
b2bda5c017
Enumerate roots for script definitions only if project is initialized
...
fixes #KT-23805
2018-05-15 19:27:09 +02:00
Ilya Chernikov
4b949ef303
Fix order of jars for the scripting plugin:
...
if gradle project is being built with JPS, the gradle scripting plugin
is passed in the plugin classpath. Since it is rebased on the embeddable
compiler, it hides expected plugin registrar signature, which leads to
the AbstractMethodError on attempt to load the plugin. Putting incoming
classpath at the end of the resulting one fixes the issue.
Fixes #KT-24448
2018-05-15 19:26:42 +02:00
Ilya Chernikov
0026a138d3
Add changelog from 1.2.40 - 1.2.41
2018-05-14 21:48:40 +02:00
Ilya Chernikov
b3219cb762
Implement lazy script definition and light discovery in cli plugin, ...
...
update appropriate parts of the scripting infrastructure
2018-05-14 11:13:44 +02:00
Ilya Chernikov
f89d5e94c5
Fix build in 182 branch
2018-05-13 10:59:47 +02:00
Ilya Chernikov
c74924fb8c
Fix lz4 dependency...
...
after snappy was replaced by lz4 in the platform (see the previous commit
with related test for the more info)
2018-05-12 19:02:04 +02:00
Ilya Chernikov
e727e20973
[minor] Improve daemon exceptions logging
2018-05-08 15:59:45 +02:00
Ilya Chernikov
22439250e2
Use kts file extension instead of kt in tests...
...
since all "kt" files are now considered - definitely non-scripts
2018-05-03 22:15:10 +02:00
Ilya Chernikov
24e8e7c40d
Eliminate script dependencies queries for non-scripts
2018-05-03 22:15:10 +02:00
Ilya Chernikov
d4070cc4d7
Return null on directories in script definition wrappers for files
2018-05-03 22:15:10 +02:00
Ilya Chernikov
9eab7a627d
Add script API libs sources to the IDEA plugin
2018-05-03 22:15:10 +02:00
Ilya Chernikov
48cf0bd949
Fixes and refactorings after review
2018-05-03 22:15:10 +02:00
Ilya Chernikov
dff4be9e04
Implement script environment variables in backend, add simple test
2018-05-03 22:15:09 +02:00
Ilya Chernikov
a9600e34bf
Add test infrastructure for custom scripts testing, add receiver test
2018-05-03 22:15:09 +02:00
Ilya Chernikov
57db77a295
Refactor script infrastructure for easier usage and testability:
...
- add script annotation for specifying default configuration for a script
- add support for this annotation in the default configurator
- rename configurator accordingly
- add default implementation of the refineConfiguration method
- make property bag class open
2018-05-03 22:15:09 +02:00
Ilya Chernikov
516924cda1
Add support for script environment variables to the frontend
2018-05-03 22:15:09 +02:00
Ilya Chernikov
15f9ad9531
Implement quick non-script detection and lazy script discovery..
...
so ".kt" and ".java" files are not considered as scripts and quickly
filtered out, and for the other files the the checks are implemented
using sequences, mechanisms provided to supply script definitions
lazily, and script discovery is implemented using this mechanisms.
2018-05-03 22:15:09 +02:00