test/script/basic/no_line_numbers.js

Tue, 07 May 2013 14:43:17 +0200

author
lagergren
date
Tue, 07 May 2013 14:43:17 +0200
changeset 253
fb1d7ea3e1b6
parent 0
b1a7da25b547
child 962
ac62e33a99b0
permissions
-rw-r--r--

8013914: Removed explicit LineNumberNodes that were too brittle when code moves around, and also introduced unnecessary footprint. Introduced the Statement node and fixed dead code elimination issues that were discovered by the absense of labels for LineNumberNodes.
Reviewed-by: jlaskey, attila

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 */
aoqi@0 23
aoqi@0 24 /**
aoqi@0 25 * no_line_numbers.js - make sure that switching off line number generation
aoqi@0 26 * doesn't break. Otherwise, this is just NASHORN-73, a unit test particularly
aoqi@0 27 * prone to label bugs in CodeGenerator
aoqi@0 28 *
aoqi@0 29 * @test
aoqi@0 30 * @run
aoqi@0 31 * @option --debug-lines=false
aoqi@0 32 */
aoqi@0 33
aoqi@0 34 print("x = " + x);
aoqi@0 35 do {
aoqi@0 36 break;
aoqi@0 37 var x;
aoqi@0 38 } while (true);
aoqi@0 39
aoqi@0 40
aoqi@0 41 print("y = " + y);
aoqi@0 42 while (true) {
aoqi@0 43 break;
aoqi@0 44 var y;
aoqi@0 45 }
aoqi@0 46
aoqi@0 47 print("z = " + z);
aoqi@0 48 for ( ; ; ) {
aoqi@0 49 break;
aoqi@0 50 var z;
aoqi@0 51 print("THIS SHOULD NEVER BE PRINTED!");
aoqi@0 52 }
aoqi@0 53
aoqi@0 54 while (true) {
aoqi@0 55 break;
aoqi@0 56 if (true) {
aoqi@0 57 var s;
aoqi@0 58 }
aoqi@0 59 }
aoqi@0 60
aoqi@0 61 print("s = "+s);
aoqi@0 62
aoqi@0 63 print("u = "+u);
aoqi@0 64 for ( ; ; ) {
aoqi@0 65 break;
aoqi@0 66 while (true) {
aoqi@0 67 do {
aoqi@0 68 var u;
aoqi@0 69 } while (true);
aoqi@0 70 }
aoqi@0 71 }
aoqi@0 72
aoqi@0 73 function terminal() {
aoqi@0 74 print("r = "+r);
aoqi@0 75 print("t = "+t);
aoqi@0 76 for (;;) {
aoqi@0 77 var r;
aoqi@0 78 return;
aoqi@0 79 var t;
aoqi@0 80 print("THIS SHOULD NEVER BE PRINTED!");
aoqi@0 81 }
aoqi@0 82 print("NEITHER SHOULD THIS");
aoqi@0 83 }
aoqi@0 84
aoqi@0 85 terminal();
aoqi@0 86
aoqi@0 87 function terminal2() {
aoqi@0 88 print("q = "+q);
aoqi@0 89 for (;;) {
aoqi@0 90 return;
aoqi@0 91 print("THIS SHOULD NEVER BE PRINTED!");
aoqi@0 92 }
aoqi@0 93 print("NEITHER SHOULD THIS");
aoqi@0 94 }
aoqi@0 95
aoqi@0 96 try {
aoqi@0 97 terminal2();
aoqi@0 98 } catch (e) {
aoqi@0 99 print(e);
aoqi@0 100 }
aoqi@0 101
aoqi@0 102 function scope2() {
aoqi@0 103 var b = 10;
aoqi@0 104 print("b = "+b);
aoqi@0 105 }
aoqi@0 106
aoqi@0 107 scope2();
aoqi@0 108
aoqi@0 109 try {
aoqi@0 110 print("b is = "+b);
aoqi@0 111 } catch (e) {
aoqi@0 112 print(e);
aoqi@0 113 }
aoqi@0 114
aoqi@0 115
aoqi@0 116 function disp_a() {
aoqi@0 117 var a = 20;
aoqi@0 118 print("Value of 'a' inside the function " + a);
aoqi@0 119 }
aoqi@0 120
aoqi@0 121 var a = 10;
aoqi@0 122
aoqi@0 123 disp_a();
aoqi@0 124
aoqi@0 125 print("Value of 'a' outside the function " + a);

mercurial