Commit Graph
100 Commits
Author SHA1 Message Date
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