nashorn/test/script/basic/JDK-8131683.js
author hannesw
Fri, 03 Feb 2017 13:28:00 +0100
changeset 43555 1bb10bccf057
parent 31828 50189d0dacb0
permissions -rw-r--r--
8173888: Test for JDK-8169481 causes stack overflows in parser tests Reviewed-by: jlaskey, sundar
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31828
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     1
/*
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     2
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     4
 * 
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     7
 * published by the Free Software Foundation.
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     8
 * 
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    13
 * accompanied this code).
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    14
 * 
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    18
 * 
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    21
 * questions.
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    22
 */
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    23
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    24
/**
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    25
 * JDK-8131683: Delete fails over multiple scopes
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    26
 *
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    27
 * @test
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    28
 * @run
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    29
 */
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    30
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    31
a = 1;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    32
b = 2;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    33
c = 3;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    34
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    35
var A = 1;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    36
var B = 2;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    37
var C = 3;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    38
function D() {}
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    39
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    40
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    41
    var x; // force creation of scope
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    42
    (function() { x; })();
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    43
    return delete a;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    44
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    45
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    46
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    47
    eval("");
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    48
    return delete b;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    49
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    50
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    51
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    52
    return eval("delete c");
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    53
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    54
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    55
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    56
    eval("d = 4");
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    57
    return eval("delete d");
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    58
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    59
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    60
print(typeof a);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    61
print(typeof b);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    62
print(typeof c);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    63
print(typeof d);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    64
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    65
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    66
    var x; // force creation of scope
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    67
    (function() { x; })();
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    68
    return delete A;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    69
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    70
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    71
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    72
    eval("");
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    73
    return delete B;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    74
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    75
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    76
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    77
    return eval("delete C");
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    78
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    79
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    80
print((function() {
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    81
    eval("");
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    82
    return delete D;
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    83
})());
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    84
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    85
print(typeof A);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    86
print(typeof B);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    87
print(typeof C);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    88
print(typeof D);
50189d0dacb0 8131683: Delete fails over multiple scopes
hannesw
parents:
diff changeset
    89