1 /* 2 * Copyright (c) 1994, 2003, 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. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.tools.tree; 27 28 import sun.tools.java.*; 29 import java.io.PrintStream; 30 import java.util.Hashtable; 31 32 /** 33 * WARNING: The contents of this source file are not part of any 34 * supported API. Code that depends on them does so at its own risk: 35 * they are subject to change or removal without notice. 36 */ 37 public 38 class CaseStatement extends Statement { 39 Expression expr; 40 41 /** 42 * Constructor 43 */ CaseStatement(long where, Expression expr)44 public CaseStatement(long where, Expression expr) { 45 super(CASE, where); 46 this.expr = expr; 47 } 48 49 /** 50 * Check statement 51 */ check(Environment env, Context ctx, Vset vset, Hashtable<Object, Object> exp)52 Vset check(Environment env, Context ctx, Vset vset, Hashtable<Object, Object> exp) { 53 if (expr != null) { 54 expr.checkValue(env, ctx, vset, exp); 55 expr = convert(env, ctx, Type.tInt, expr); 56 expr = expr.inlineValue(env, ctx); 57 } 58 return vset.clearDeadEnd(); 59 } 60 61 /** 62 * The cost of inlining this statement 63 */ costInline(int thresh, Environment env, Context ctx)64 public int costInline(int thresh, Environment env, Context ctx) { 65 return 6; 66 } 67 68 /** 69 * Print 70 */ print(PrintStream out, int indent)71 public void print(PrintStream out, int indent) { 72 super.print(out, indent); 73 if (expr == null) { 74 out.print("default"); 75 } else { 76 out.print("case "); 77 expr.print(out); 78 } 79 out.print(":"); 80 } 81 } 82