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.
52 lines
1.2 KiB
52 lines
1.2 KiB
/*
|
|
* Bug test case for a pc2line encoding error. Triggered when the full
|
|
* 32 bit encoding activates (diff is > 8 bits, roughly).
|
|
*/
|
|
|
|
/*===
|
|
line 2
|
|
TypeError 3
|
|
line 2
|
|
TypeError 53
|
|
line 2
|
|
TypeError 103
|
|
line 2
|
|
TypeError 153
|
|
line 2
|
|
TypeError 203
|
|
===*/
|
|
|
|
function rep(s, n) {
|
|
var res = [];
|
|
while (n--) { res.push(s); }
|
|
return res.join('');
|
|
}
|
|
|
|
function evalCheck(code) {
|
|
try {
|
|
eval(code);
|
|
print('successful eval (unexpected)');
|
|
} catch (e) {
|
|
print(e.name + ' ' + e.lineNumber);
|
|
}
|
|
}
|
|
|
|
function test() {
|
|
/* This problem originally occurred in test262 testing (for 'this').
|
|
* The `null.foo` access causes a TypeError (from getting a property
|
|
* from undefined), but it is attributed incorrectly if there are
|
|
* enough many empty lines in between.
|
|
*/
|
|
|
|
evalCheck("\nprint('line 2')\n" + "if (null.foo) {}");
|
|
evalCheck("\nprint('line 2')\n" + rep('\n', 50) + "if (null.foo) {}");
|
|
evalCheck("\nprint('line 2')\n" + rep('\n', 100) + "if (null.foo) {}");
|
|
evalCheck("\nprint('line 2')\n" + rep('\n', 150) + "if (null.foo) {}");
|
|
evalCheck("\nprint('line 2')\n" + rep('\n', 200) + "if (null.foo) {}");
|
|
}
|
|
|
|
try {
|
|
test();
|
|
} catch (e) {
|
|
print(e);
|
|
}
|
|
|