* Yes - function-declaration-as-statement is allowed in nashorn for
compatibility with other impls.
nashorn jjs tool has these 2 options:
--function-statement-error (Report an error when function declaration is
used as a statement.)
param: [true|false] default: false
--function-statement-warning (Warn when function declaration is used as
a statement.)
param: [true|false] default: false
* On unnamed function declaration: again this seems to be allowed by
rhino as well. Also, using script engine API, it is possible to eval an
anon-func-declaraion and call the resulting the script function object:
Example:
var m = new javax.script.ScriptEngineManager();
var e = m.getEngineByName("nashorn");
var func = e.eval("function() { print('Anon function') }");
func();
* On for..each: I'll file a sub-task to report error in this case.
Thanks for checking with SpiderMonkey.
Thanks
-Sundar
On Wednesday 03 July 2013 11:53 AM, André Bargull wrote:
On 6/28/2013 7:49 PM, A. Sundararajan wrote:
Hi,
I've filed one big umbrella issue for all the issues that you sent
today. (JDK-8019398).
Two observations:
* with({}) function() {}
seems to be accepted by rhino as well. Need to check with what spec.
says though.
It's an error per spec, because
(1) FunctionDeclaration productions can only appear at top-level (that
means in SourceElement)
(2) FunctionDeclarations must be named
and it cannot be parsed as an ExpressionStatement due to the lookahead
restriction in ExpressionStatement.
For compatibility reasons number (1) needs to be dropped, that means
the FunctionDeclaration production moves to the Statement production
(with more or less custom semantics, es-discuss has several threads
about this issue). But (2) still holds. And an unnamed function
declaration is somewhat useless because it's never callable, isn't it?
* for each with initializer - for each(var v=0;false;);
is also permitted by rhino as well - "each" is treated as a noise
word in that case. Given that we included for..each for compatibility
with rhino, we might as well leave that noise word (or is it a bug
with rhino as well?)
I'd call this a Rhino bug, too. By checking the commit history, I've
found out that this bug was already present when E4X support w.r.t.
for-each was initially added. SpiderMonkey reports an error for that
code.
- André
-Sundar
On Friday 28 June 2013 03:04 PM, André Bargull wrote:
[....]