Robert Muir
ec7215e5f2
get non-capturing lambdas working
2016-06-16 01:25:43 -04:00
Robert Muir
60176afdde
clean up a bit more
2016-06-15 20:30:16 -04:00
Ryan Ernst
a4503c2aed
Plugins: Remove name() and description() from api
...
In 2.0 we added plugin descriptors which require defining a name and
description for the plugin. However, we still have name() and
description() which must be overriden from the Plugin class. This still
exists for classpath plugins. But classpath plugins are mainly for
tests, and even then, referring to classpath plugins with their class is
a better idea. This change removes name() and description(), replacing
the name for classpath plugins with the full class name.
2016-06-15 17:12:22 -07:00
Robert Muir
54797b7d09
don't let megamorphic cache "capture" arbitrary arguments.
...
pass the shit we need as bootstrap params
2016-06-15 19:33:59 -04:00
Uwe Schindler
ae6ce1c42e
Small refactoring and cleanup to separate the polymorphic and megamorphic case
2016-06-15 22:27:30 +02:00
Uwe Schindler
6e83f41e94
Merge branch 'more_def_cleanup' of https://github.com/rmuir/elasticsearch into more_def_cleanup
2016-06-15 21:47:28 +02:00
Uwe Schindler
5b11b15300
fix typo
2016-06-15 21:46:58 +02:00
Robert Muir
786c3b0fa8
speed up compound assignments
2016-06-15 14:38:37 -04:00
Robert Muir
a4036b8069
add compound assignment tests
2016-06-15 14:02:19 -04:00
Uwe Schindler
949e99bde3
Merge branch 'more_def_cleanup' of https://github.com/rmuir/elasticsearch into more_def_cleanup
2016-06-15 19:48:53 +02:00
Uwe Schindler
8d3c411298
Remove unneeded type adaption and add error message on violation
2016-06-15 19:48:38 +02:00
Robert Muir
e3f34730ae
and compound assignment
2016-06-15 13:37:10 -04:00
Robert Muir
27f8b6e6db
get compound assignment working
2016-06-15 13:30:21 -04:00
Uwe Schindler
ca2e0e1660
Some small cleanups around the lookup
2016-06-15 19:07:13 +02:00
Uwe Schindler
767bb49da8
Fix bug with first param (receiver) on the cache lookup
2016-06-15 19:00:22 +02:00
Uwe Schindler
283410b7ac
Merge branch 'more_def_cleanup' of https://github.com/rmuir/elasticsearch into more_def_cleanup
2016-06-15 18:37:07 +02:00
Uwe Schindler
04ab42cdf5
Use rethrow puzzler in the ClassValue
2016-06-15 18:36:45 +02:00
Robert Muir
d4db8c9c82
some cleanup
2016-06-15 12:32:38 -04:00
Uwe Schindler
6487940a79
Move type changes up to static part
2016-06-15 18:26:11 +02:00
Uwe Schindler
a473298f44
Add megamorphic cache
2016-06-15 18:21:42 +02:00
Robert Muir
b71f42a627
split MIC from PIC
2016-06-15 09:07:11 -04:00
Robert Muir
2b1ebc55a9
remove null guards from +, if not needed.
...
improve DefBootstrapTests
2016-06-14 23:52:21 -04:00
Robert Muir
5e4b2f2815
clean up compound assignment tests, fix shift bug
2016-06-14 20:40:16 -04:00
Robert Muir
cd4f4594d6
fix perf bug with xor promotion
2016-06-14 19:19:50 -04:00
Jack Conradson
5cef06fa3e
Add a test.
2016-06-14 14:28:47 -07:00
Jack Conradson
36f7632232
Correct type checking during casting related to Object.
2016-06-14 14:12:23 -07:00
Robert Muir
b69e8aadbd
refactor tests
2016-06-14 15:07:56 -04:00
Robert Muir
e4dc469e58
Merge pull request #18849 from rmuir/give_indy_ops_types
...
Remove casts and boxing for dynamic math
2016-06-14 13:01:04 -04:00
Robert Muir
79f0ab2fc6
rename this variable
2016-06-14 12:51:29 -04:00
Nik Everett
49c09f1527
Test: Fix error message check for Windows
...
Betrayal! CRLF strikes again. Weakened the test from equals to
containsString.
2016-06-14 09:56:49 -04:00
Robert Muir
a12937d548
painless: remove casts and boxing for dynamic math
2016-06-14 00:49:13 -04:00
Robert Muir
7ecb4ca4e9
Refactor def math
2016-06-13 18:56:28 -04:00
Nik Everett
6617b53422
Painless: Add support for /regex/
...
Adds `/regex/` as a regex constructor. A couple of fun points:
1. This makes generic the idea of arbitrary stuff adding a constant.
Both SFunction and LRegex create a statically initialized constant.
Both go through Locals to do this because they LRegex isn't directly
iterable from SScript.
2. Differentiating `/` as-in-division from `/` as-in-start-of-regex
is hard. See:
http://www-archive.mozilla.org/js/language/js20-2002-04/rationale/syntax.html#regular-expressions
The javascript folks have a way, way tougher time of it then we do
because they have semicolon insertion. We have the much simpler
delimiter rules. Even with our simpler life we still have to add
a hack to get lexing `/regex/` to work properly. I chose to add
token-level lookbehind because it seems to be a pretty contained hack.
I considered and rejected lexer modes, a lexer member variable,
having the parser set variables on the lexer (this is a fairly common
solution for js, I believe), and moving regex parsing to the parser
level.
3. I've only added a very small subset of java.util.regex to the
whitelist because it is the subset I needed to test LRegex sanely.
More deserves to be added, and maybe more regex syntax like `=~` and
`==~`. Those can probably be added without too much pain.
2016-06-13 18:11:45 -04:00
Robert Muir
c6e144f669
remove stray tab, fix comment
2016-06-13 13:35:11 -04:00
Robert Muir
faee2323ab
add array ctor refs
2016-06-12 12:53:37 -04:00
Robert Muir
5be9211761
cleanup grammar
2016-06-12 11:25:52 -04:00
Uwe Schindler
60cc152caf
Remove unused field
2016-06-11 22:34:17 +02:00
Robert Muir
5c352a063a
need not be public, should not be public
2016-06-11 16:03:45 -04:00
Robert Muir
07baefac32
Add comments
2016-06-11 16:01:50 -04:00
Uwe Schindler
fd9b0f9087
Remove some hardcoded strings, fix exception handling (remove rethrow), add some utility methods around the "handle$" fields
2016-06-11 21:53:15 +02:00
Robert Muir
454881eeb4
test interface default methods
2016-06-11 15:51:32 -04:00
Uwe Schindler
c08b45a277
More cleanup
2016-06-11 21:20:39 +02:00
Robert Muir
65352face2
fix too long line
2016-06-11 15:04:49 -04:00
Robert Muir
592042601f
def case working
2016-06-11 15:02:43 -04:00
Uwe Schindler
876f0a613e
Unfuck the MethodWriter nesting. All MethodWriters should only live separately from each other, no nesting
2016-06-11 21:00:06 +02:00
Robert Muir
e2f999b025
make this static final
2016-06-11 14:33:48 -04:00
Robert Muir
8d5a70200f
write refs for functions
2016-06-11 14:29:15 -04:00
Robert Muir
ab457be9d8
remove unnecessary semicolon and return
2016-06-11 13:48:04 -04:00
Robert Muir
0bfb166eeb
merge master
2016-06-11 13:23:17 -04:00
Nik Everett
4a265d0279
Painless: Add } as a delimiter. Kindof.
...
Add `}` is statement delimiter but only in places where it is
otherwise a valid part of the syntax, specificall the end of a block.
We do this by matching but not consuming it. Antlr 4 doesn't have
syntax for this so we have to kind of hack it together by actually
matching the `}` and then seeking backwards in the token stream to
"unmatch" it. This looks reasonably efficient. Not perfect, but way
better than the alternatives.
I tried and rejected a few options:
1. Actually consuming the `}` and piping a boolean all through the
grammar from the last statement in a block to the delimiter. This
ended up being a rather large change and made the grammar way more
complicated.
2. Adding a semantic predicate to delimiter that just does the
lookahead. This doesn't work out well because it doesn't work (I
never figured out why) and because it generates an *amazing*
`adaptivePredict` which makes a super huge DFA. It looks super
inefficient.
Closes #18821
2016-06-11 12:51:25 -04:00
Jack Conradson
e293000d8d
Merge branch 'master' into stubby
2016-06-10 16:22:17 -07:00
Jack Conradson
bd94c62adf
Added a stub node for lambda expressions.
2016-06-10 16:18:36 -07:00
Robert Muir
16d17351f7
don't use loadLocal, add new node to package-info
2016-06-10 17:37:57 -04:00
Robert Muir
9e0a70c4b2
Merge branch 'master' into capturingReferences
2016-06-10 17:10:56 -04:00
Jack Conradson
f98be6fa06
Add functions to Painless.
...
Closes #18810
2016-06-10 13:59:59 -07:00
Robert Muir
edb0fd3b88
painless: add capturing method references
2016-06-10 14:24:58 -04:00
Robert Muir
9826b64e1f
Exempt LocalDate from bridge method checks on java 9
...
The painless whitelist has a lot of self-checking, in this case, it checks
for missing covariant overrides. It fails on java 9, because LocalDate.getEra()
now returns IsoEra instead of Era: https://bugs.openjdk.java.net/browse/JDK-8072746
To our checker, it thinks we were lazy with whitelisting :)
This means painless works on java 9 again
2016-06-08 15:47:09 -04:00
Jack Conradson
be168f528b
Merge pull request #18771 from jdconrad/methods
...
Add Method to Get New MethodWriters
2016-06-07 11:47:29 -07:00
Jack Conradson
f9b45107c4
Added method to allow creation of new methods on-the-fly.
2016-06-07 11:24:33 -07:00
Robert Muir
f23e8c3722
more cleanups
2016-06-07 12:42:19 -04:00
Robert Muir
89224dbc3c
switch FunctionRef over to methodhandles
2016-06-07 11:56:44 -04:00
Robert Muir
32965f043a
convert FunctionRef/Def usage to methodhandles.
2016-06-07 10:23:49 -04:00
Robert Muir
3108c399f0
use painless types in FunctionRef
2016-06-07 09:49:54 -04:00
Robert Muir
39550354a7
compute functional interface stuff in Definition
2016-06-07 09:41:03 -04:00
Uwe Schindler
3238868cc4
Make checkstyle happy (add Lookup import, line length)
2016-06-07 13:06:23 +02:00
Uwe Schindler
cac111ff73
Don't hide LambdaConversionException and behave like real javac compiled code when a conversion fails. This works anyways, because fallback is allowed to throw any Throwable
2016-06-07 13:00:36 +02:00
Uwe Schindler
6913be2ec2
Pass through the lookup given by invokedynamic to the LambdaMetaFactory. Without it real lambdas won't work, as their implementations are private to script class
2016-06-07 12:32:59 +02:00
Robert Muir
950b093fc7
Merge branch 'master' into painless_method_references
2016-06-06 22:39:28 -04:00
Jack Conradson
b3804c47f7
Cleaned up SEach node.
2016-06-06 18:21:08 -07:00
Robert Muir
231268c89d
remove outdated TODO
2016-06-06 21:04:59 -04:00
Jack Conradson
6dace47c1f
Reverted S-node design change.
2016-06-06 17:59:39 -07:00
Robert Muir
8db9a971e5
enable test
2016-06-06 20:30:42 -04:00
Robert Muir
2852e82ab9
add def iteration over arrays
2016-06-06 20:07:32 -04:00
Robert Muir
d331f8768e
implement dynamic case for iterables
2016-06-06 19:41:37 -04:00
Jack Conradson
aeaf39f36d
Added a for each stub node for a target type of def.
2016-06-06 16:07:12 -07:00
Jack Conradson
a088d367f7
More comments.
2016-06-06 15:58:56 -07:00
Jack Conradson
f897342296
Updated package info documentation.
2016-06-06 15:34:51 -07:00
Jack Conradson
9a78f6955b
Added foreach for array types.
2016-06-06 15:25:09 -07:00
Robert Muir
23d7cdd043
ban slow methods in MethodHandle
2016-06-06 17:58:00 -04:00
Robert Muir
b32f6abb26
remove unnecessary caching
2016-06-06 17:29:03 -04:00
Jack Conradson
a4ffaa6e7a
Working iterable foreach with tests.
2016-06-06 13:53:31 -07:00
Jack Conradson
b2e648dfde
Implementation of iterable.
2016-06-06 12:33:25 -07:00
Jack Conradson
260b0fd40f
Stubbed foreach node.
2016-06-06 10:49:40 -07:00
Jack Conradson
0c9174decc
Merge branch 'master' into each
2016-06-06 09:23:01 -07:00
Robert Muir
881e4058ee
don't do a no-op filter, that was just for testing
2016-06-06 09:39:39 -04:00
Robert Muir
6dbf7ab1ea
initial messy impl of painless method references
2016-06-06 09:27:19 -04:00
Uwe Schindler
c0a3a20071
painless: Add support for the new Java 9 MethodHandles#arrayLength() factory (see https://bugs.openjdk.java.net/browse/JDK-8156915 )
2016-06-03 23:35:11 +02:00
Jack Conradson
9a0d0d7cff
Fixed a grammar mistake in a comment.
2016-06-02 15:30:11 -07:00
Robert Muir
b5393ce55e
Improve painless compile-time exceptions
2016-06-02 18:23:47 -04:00
Jack Conradson
b6e1429760
Merge branch 'master' into each
2016-05-31 09:36:04 -07:00
Robert Muir
2d1eb89aef
improve date api for expressions/painless fields
2016-05-31 09:32:33 -04:00
Jack Conradson
d1f4e2ef04
Merge branch 'master' into each
2016-05-30 16:22:14 -07:00
Jack Conradson
f5be0982d9
Added initial infrastructure to allow for each to be made.
2016-05-27 17:41:31 -07:00
Jack Conradson
2d8030f09f
Added foreach in grammar.
2016-05-27 13:50:38 -07:00
Robert Muir
aa53285448
add java.time packages to painless whitelist
2016-05-27 15:07:27 -04:00
Robert Muir
3f06d9f3b8
Merge pull request #18600 from rmuir/new_script_exception
...
replace ScriptException with a better one
2016-05-26 17:51:34 -04:00
Jack Conradson
cde83e363a
Add an update script equivalent test.
2016-05-26 13:16:22 -07:00
Robert Muir
f037807117
replace ScriptException with a better one
2016-05-26 11:43:29 -04:00
Jack Conradson
eefcafd831
Add method reference stub to Painless.
2016-05-25 10:34:21 -07:00
Ryan Ernst
82ae65bbb5
Tests: Make score tests unit tests
...
This change simply removes the need for single node tests from score
tests.
2016-05-24 19:53:50 -07:00