home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import java.io.PrintStream;
- import java.util.Hashtable;
- import sun.tools.asm.Assembler;
- import sun.tools.java.ClassDeclaration;
- import sun.tools.java.ClassDefinition;
- import sun.tools.java.ClassNotFound;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.Type;
-
- public class ThrowStatement extends Statement {
- Expression expr;
-
- public ThrowStatement(int var1, Expression var2) {
- super(104, var1);
- this.expr = var2;
- }
-
- Vset check(Environment var1, Context var2, Vset var3, Hashtable var4) {
- try {
- var3 = ((Statement)this).reach(var1, var3);
- this.expr.checkValue(var1, var2, var3, var4);
- if (this.expr.type.isType(10)) {
- ClassDeclaration var5 = var1.getClassDeclaration(this.expr.type);
- if (var4.get(var5) == null) {
- var4.put(var5, this);
- }
-
- ClassDefinition var6 = var5.getClassDefinition(var1);
- ClassDeclaration var7 = var1.getClassDeclaration(Constants.idJavaLangThrowable);
- if (!var6.subClassOf(var1, var7)) {
- var1.error(super.where, "throw.not.throwable", var6);
- }
-
- this.expr = ((Node)this).convert(var1, var2, Type.tObject, this.expr);
- } else if (!this.expr.type.isType(13)) {
- var1.error(this.expr.where, "throw.not.throwable", this.expr.type);
- }
- } catch (ClassNotFound var8) {
- var1.error(super.where, "class.not.found", var8.name, Constants.opNames[super.op]);
- }
-
- return Statement.DEAD_END;
- }
-
- public Statement inline(Environment var1, Context var2) {
- this.expr = this.expr.inlineValue(var1, var2);
- return this;
- }
-
- public Statement copyInline(Context var1, boolean var2) {
- ThrowStatement var3 = (ThrowStatement)((Node)this).clone();
- var3.expr = this.expr.copyInline(var1);
- return var3;
- }
-
- public int costInline(int var1, Environment var2, Context var3) {
- return 1 + this.expr.costInline(var1, var2, var3);
- }
-
- public void code(Environment var1, Context var2, Assembler var3) {
- this.expr.codeValue(var1, var2, var3);
- var3.add(super.where, 191);
- }
-
- public void print(PrintStream var1, int var2) {
- super.print(var1, var2);
- var1.print("throw ");
- this.expr.print(var1);
- var1.print(":");
- }
- }
-