CoerceNullToMoreSpecificTypeTest.java revision 2933:49d207bf704d
1/*
2 * Copyright (c) 2015, 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 * @test
26 * @bug 7040592
27 * @summary Test that the assertion in State.forceStackTop does not fail at compile time.
28 * @modules java.xml
29 */
30
31import java.lang.reflect.Field;
32import java.util.ArrayList;
33import org.w3c.dom.Element;
34
35public class CoerceNullToMoreSpecificTypeTest {
36    abstract class NodeImpl {
37    }
38
39    NodeImpl ownerNode;
40
41    public Element getElement() {
42        return (Element) (isOwned() ? ownerNode : null);
43    }
44
45    boolean isOwned() {
46        return true;
47    }
48
49    static void processArrays(boolean expectNulls, Object [] nulla, Object [][] nullaa) {
50        if (expectNulls) {
51            if (nulla != null || nullaa != null) {
52                throw new AssertionError("Null actual, but not null formal");
53            }
54        } else {
55            if (nulla.length != 123 || nullaa.length != 321)
56                throw new AssertionError("Wrong arrays received");
57        }
58    }
59
60    public static void main(String[] args) {
61        ArrayList<Class<?>> typeList = new ArrayList<>();
62        Field rf = null;
63        typeList.add((rf != null) ? rf.getType() : null);
64        processArrays(true, null, null);
65        processArrays(false, new Object[123], new Object[321][]);
66    }
67}
68