NASHORN-486.js revision 877:cf4d2252d444
1/*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/**
25 * NASHORN-486 : error reporting is inconsistent
26 *
27 * @test
28 * @run
29 */
30
31var fileName = __FILE__;
32
33try {
34    // save line number and force ReferenceError for 'foo'
35    var lineNumber = __LINE__; print(foo);
36    fail("#1 should have thrown ReferenceError");
37} catch (e) {
38    if (! (e instanceof ReferenceError)) {
39        fail("#2 ReferenceError expected, got " + e);
40    }
41
42    if (e.lineNumber !== lineNumber) {
43        fail("#3 line number not correct");
44    }
45
46    if (e.fileName !== fileName) {
47        fail("#4 file name not correct");
48    }
49}
50
51try {
52    // try any library function on invalid self
53    // get line number again and force a TypeError
54    lineNumber = __LINE__; RegExp.prototype.exec.call(3);
55    fail("#5 should have thrown TypeError");
56} catch (e) {
57    if (! (e instanceof TypeError)) {
58        fail("#6 TypeError expected, got " + e);
59    }
60
61    if (e.lineNumber !== lineNumber) {
62        fail("#7 line number not correct");
63    }
64
65    if (e.fileName !== fileName) {
66        fail("#8 file name not correct");
67    }
68}
69
70// try explicit exception thrown from script
71try {
72    lineNumber = __LINE__; throw new Error();
73} catch (e) {
74    if (e.lineNumber !== lineNumber) {
75        fail("#9 line number not correct");
76    }
77
78    if (e.fileName !== fileName) {
79        fail("#10 file name not correct");
80    }
81}
82