1 16 19 20 package com.sun.org.apache.xalan.internal.xsltc.compiler.util; 21 22 import com.sun.org.apache.bcel.internal.generic.Instruction; 23 import com.sun.org.apache.bcel.internal.generic.InstructionList; 24 import com.sun.org.apache.bcel.internal.generic.PUSH; 25 import com.sun.org.apache.xalan.internal.xsltc.compiler.Constants; 26 27 31 public final class VoidType extends Type { 32 protected VoidType() {} 33 34 public String toString() { 35 return "void"; 36 } 37 38 public boolean identicalTo(Type other) { 39 return this == other; 40 } 41 42 public String toSignature() { 43 return "V"; 44 } 45 46 public com.sun.org.apache.bcel.internal.generic.Type toJCType() { 47 return null; } 49 50 public Instruction POP() { 51 return NOP; 52 } 53 54 61 public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, 62 Type type) { 63 if (type == Type.String) { 64 translateTo(classGen, methodGen, (StringType) type); 65 } 66 else { 67 ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, 68 toString(), type.toString()); 69 classGen.getParser().reportError(Constants.FATAL, err); 70 } 71 } 72 73 78 public void translateTo(ClassGenerator classGen, MethodGenerator methodGen, 79 StringType type) { 80 final InstructionList il = methodGen.getInstructionList(); 81 il.append(new PUSH(classGen.getConstantPool(), "")); 82 } 83 84 88 public void translateFrom(ClassGenerator classGen, MethodGenerator methodGen, 89 Class clazz) { 90 if (!clazz.getName().equals("void")) { 91 ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR, 92 toString(), clazz.getName()); 93 classGen.getParser().reportError(Constants.FATAL, err); 94 } 95 } 96 } 97 | Popular Tags |