mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.2 KiB
68 lines
1.2 KiB
/*
|
|
* Direct eval detection handling in duk_bi_global.c refers to the calling
|
|
* activation, so tail calls might interfere with the process.
|
|
*
|
|
* Check that this works correctly. Direct eval code inherits strictness
|
|
* from the calling code, which can be used to detect whether or not the
|
|
* handling is correct. Strict eval doesn't get a this binding, so '!this'
|
|
* will be true (false for non-strict eval code).
|
|
*/
|
|
|
|
/*===
|
|
eval false
|
|
f0 false
|
|
f0s false
|
|
f1 false
|
|
f1s true
|
|
f2 false
|
|
f2s true
|
|
===*/
|
|
|
|
function f0() {
|
|
var ret;
|
|
var my_eval = eval;
|
|
ret = my_eval('!this'); // indirect eval
|
|
return ret;
|
|
}
|
|
|
|
function f0s() {
|
|
'use strict';
|
|
var ret;
|
|
var my_eval = eval;
|
|
ret = my_eval('!this'); // indirect eval
|
|
return ret;
|
|
}
|
|
|
|
function f1() {
|
|
var ret;
|
|
ret = eval('!this');
|
|
return ret;
|
|
}
|
|
|
|
function f1s() {
|
|
'use strict';
|
|
var ret;
|
|
ret = eval('!this');
|
|
return ret;
|
|
}
|
|
|
|
function f2() {
|
|
return eval('!this');
|
|
}
|
|
|
|
function f2s() {
|
|
'use strict';
|
|
return eval('!this');
|
|
}
|
|
|
|
try {
|
|
print('eval', eval('!this'));
|
|
print('f0', f0());
|
|
print('f0s', f0s());
|
|
print('f1', f1());
|
|
print('f1s', f1s());
|
|
print('f2', f2());
|
|
print('f2s', f2s());
|
|
} catch (e) {
|
|
print(e);
|
|
}
|
|
|