Package javassist.compiler
Class TypeChecker
- java.lang.Object
-
- javassist.compiler.ast.Visitor
-
- javassist.compiler.TypeChecker
-
-
Field Summary
Fields Modifier and Type Field Description protected intarrayDimprotected java.lang.StringclassNameprotected intexprType(package private) static java.lang.StringjavaLangObject(package private) static java.lang.StringjvmJavaLangClass(package private) static java.lang.StringjvmJavaLangObject(package private) static java.lang.StringjvmJavaLangStringprotected MemberResolverresolverprotected CtClassthisClassprotected MethodInfothisMethod-
Fields inherited from interface javassist.bytecode.Opcode
AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, STACK_GROW, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, WIDE
-
Fields inherited from interface javassist.compiler.TokenId
ABSTRACT, AND_E, ANDAND, ARRAY, ARSHIFT, ARSHIFT_E, assignOps, BadToken, BLOCK, BOOLEAN, BREAK, BYTE, CALL, CASE, CATCH, CHAR, CharConstant, CLASS, CONST, CONTINUE, DECL, DEFAULT, DIV_E, DO, DOUBLE, DoubleConstant, ELSE, EQ, EXOR_E, EXPR, EXTENDS, FALSE, FINAL, FINALLY, FLOAT, FloatConstant, FOR, GE, GOTO, Identifier, IF, IMPLEMENTS, IMPORT, INSTANCEOF, INT, IntConstant, INTERFACE, LABEL, LE, LONG, LongConstant, LSHIFT, LSHIFT_E, MEMBER, MINUS_E, MINUSMINUS, MOD_E, MUL_E, NATIVE, NEQ, NEW, NULL, opNames, OR_E, OROR, PACKAGE, PLUS_E, PLUSPLUS, PRIVATE, PROTECTED, PUBLIC, RETURN, RSHIFT, RSHIFT_E, SHORT, STATIC, STRICT, StringL, SUPER, SWITCH, SYNCHRONIZED, THIS, THROW, THROWS, TRANSIENT, TRUE, TRY, VOID, VOLATILE, WHILE
-
-
Constructor Summary
Constructors Constructor Description TypeChecker(CtClass cc, ClassPool cp)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static java.lang.StringargTypesToString(int[] types, int[] dims, java.lang.String[] cnames)private voidatArrayAssign(Expr expr, int op, Expr array, ASTree right)voidatArrayInit(ArrayInit init)voidatArrayLength(Expr expr)voidatArrayRead(ASTree array, ASTree index)voidatAssignExpr(AssignExpr expr)voidatBinExpr(BinExpr expr)voidatCallExpr(CallExpr expr)voidatCastExpr(CastExpr expr)voidatClassObject(Expr expr)voidatCondExpr(CondExpr expr)voidatDoubleConst(DoubleConst d)voidatExpr(Expr expr)protected voidatFieldAssign(Expr expr, int op, ASTree left, ASTree right)protected voidatFieldPlusPlus(ASTree oprand)private voidatFieldRead(ASTree expr)private voidatFieldRead(CtField f)voidatInstanceOfExpr(InstanceOfExpr expr)voidatIntConst(IntConst i)voidatKeyword(Keyword k)voidatMember(Member mem)voidatMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames)MemberResolver.MethodatMethodCallCore(CtClass targetClass, java.lang.String mname, ASTList args)protected voidatMultiNewArray(int type, ASTList classname, ASTList size)voidatNewArrayExpr(NewExpr expr)voidatNewExpr(NewExpr expr)private ExpratPlusExpr(BinExpr expr)private voidatPlusPlus(int token, ASTree oprand, Expr expr)voidatStringL(StringL s)voidatVariable(Variable v)private voidatVariableAssign(Expr expr, int op, Variable var, Declarator d, ASTree right)private static voidbadMethod()private voidbooleanExpr(ASTree expr)private voidcomputeBinExprType(BinExpr expr, int token, int type1)protected static voidfatal()protected CtFieldfieldAccess(ASTree expr)private CtFieldfieldAccess2(Expr e, java.lang.String jvmClassName)private static ASTreegetConstantFieldValue(Member mem)If MEM is a static final field, this method returns a constant expression representing the value of that field.static ASTreegetConstantFieldValue(CtField f)intgetMethodArgsLength(ASTList args)protected java.lang.StringgetSuperName()Returns the JVM-internal representation of this super class name.protected java.lang.StringgetThisName()Returns the JVM-internal representation of this class name.private voidinsertCast(BinExpr expr, int type1, int type2)private booleanisConstant(BinExpr expr, int op, ASTree left, ASTree right)private booleanisConstant(Expr expr, int op, ASTree oprand)(package private) static java.lang.StringisDotSuper(ASTree target)Returns non-null if target is something like Foo.super for accessing the default method in an interface.private static booleanisPlusExpr(ASTree expr)private static ExprmakeAppendCall(ASTree target, ASTree arg)protected java.lang.StringresolveClassName(java.lang.String jvmName)protected java.lang.StringresolveClassName(ASTList name)(package private) voidsetReturnType(java.lang.String desc)voidsetThisMethod(MethodInfo m)Records the currently compiled method.(package private) static ASTreestripPlusExpr(ASTree expr)protected static java.lang.StringBuffertypeToString(java.lang.StringBuffer sbuf, int type, int dim, java.lang.String cname)-
Methods inherited from class javassist.compiler.ast.Visitor
atASTList, atDeclarator, atFieldDecl, atMethodDecl, atPair, atStmnt, atSymbol
-
-
-
-
Field Detail
-
javaLangObject
static final java.lang.String javaLangObject
- See Also:
- Constant Field Values
-
jvmJavaLangObject
static final java.lang.String jvmJavaLangObject
- See Also:
- Constant Field Values
-
jvmJavaLangString
static final java.lang.String jvmJavaLangString
- See Also:
- Constant Field Values
-
jvmJavaLangClass
static final java.lang.String jvmJavaLangClass
- See Also:
- Constant Field Values
-
exprType
protected int exprType
-
arrayDim
protected int arrayDim
-
className
protected java.lang.String className
-
resolver
protected MemberResolver resolver
-
thisClass
protected CtClass thisClass
-
thisMethod
protected MethodInfo thisMethod
-
-
Method Detail
-
argTypesToString
protected static java.lang.String argTypesToString(int[] types, int[] dims, java.lang.String[] cnames)
-
typeToString
protected static java.lang.StringBuffer typeToString(java.lang.StringBuffer sbuf, int type, int dim, java.lang.String cname)
-
setThisMethod
public void setThisMethod(MethodInfo m)
Records the currently compiled method.
-
fatal
protected static void fatal() throws CompileError- Throws:
CompileError
-
getThisName
protected java.lang.String getThisName()
Returns the JVM-internal representation of this class name.
-
getSuperName
protected java.lang.String getSuperName() throws CompileErrorReturns the JVM-internal representation of this super class name.- Throws:
CompileError
-
resolveClassName
protected java.lang.String resolveClassName(ASTList name) throws CompileError
- Throws:
CompileError
-
resolveClassName
protected java.lang.String resolveClassName(java.lang.String jvmName) throws CompileError- Throws:
CompileError
-
atNewExpr
public void atNewExpr(NewExpr expr) throws CompileError
- Overrides:
atNewExprin classVisitor- Throws:
CompileError
-
atNewArrayExpr
public void atNewArrayExpr(NewExpr expr) throws CompileError
- Throws:
CompileError
-
atArrayInit
public void atArrayInit(ArrayInit init) throws CompileError
- Overrides:
atArrayInitin classVisitor- Throws:
CompileError
-
atMultiNewArray
protected void atMultiNewArray(int type, ASTList classname, ASTList size) throws CompileError- Throws:
CompileError
-
atAssignExpr
public void atAssignExpr(AssignExpr expr) throws CompileError
- Overrides:
atAssignExprin classVisitor- Throws:
CompileError
-
atVariableAssign
private void atVariableAssign(Expr expr, int op, Variable var, Declarator d, ASTree right) throws CompileError
- Throws:
CompileError
-
atArrayAssign
private void atArrayAssign(Expr expr, int op, Expr array, ASTree right) throws CompileError
- Throws:
CompileError
-
atFieldAssign
protected void atFieldAssign(Expr expr, int op, ASTree left, ASTree right) throws CompileError
- Throws:
CompileError
-
atCondExpr
public void atCondExpr(CondExpr expr) throws CompileError
- Overrides:
atCondExprin classVisitor- Throws:
CompileError
-
atBinExpr
public void atBinExpr(BinExpr expr) throws CompileError
- Overrides:
atBinExprin classVisitor- Throws:
CompileError
-
atPlusExpr
private Expr atPlusExpr(BinExpr expr) throws CompileError
- Throws:
CompileError
-
isConstant
private boolean isConstant(BinExpr expr, int op, ASTree left, ASTree right) throws CompileError
- Throws:
CompileError
-
getConstantFieldValue
private static ASTree getConstantFieldValue(Member mem)
If MEM is a static final field, this method returns a constant expression representing the value of that field.
-
isPlusExpr
private static boolean isPlusExpr(ASTree expr)
-
computeBinExprType
private void computeBinExprType(BinExpr expr, int token, int type1) throws CompileError
- Throws:
CompileError
-
booleanExpr
private void booleanExpr(ASTree expr) throws CompileError
- Throws:
CompileError
-
insertCast
private void insertCast(BinExpr expr, int type1, int type2) throws CompileError
- Throws:
CompileError
-
atCastExpr
public void atCastExpr(CastExpr expr) throws CompileError
- Overrides:
atCastExprin classVisitor- Throws:
CompileError
-
atInstanceOfExpr
public void atInstanceOfExpr(InstanceOfExpr expr) throws CompileError
- Overrides:
atInstanceOfExprin classVisitor- Throws:
CompileError
-
atExpr
public void atExpr(Expr expr) throws CompileError
- Overrides:
atExprin classVisitor- Throws:
CompileError
-
atCallExpr
public void atCallExpr(CallExpr expr) throws CompileError
- Overrides:
atCallExprin classVisitor- Throws:
CompileError
-
badMethod
private static void badMethod() throws CompileError- Throws:
CompileError
-
isDotSuper
static java.lang.String isDotSuper(ASTree target)
Returns non-null if target is something like Foo.super for accessing the default method in an interface. Otherwise, null.- Returns:
- the class name followed by
.superor null.
-
atMethodCallCore
public MemberResolver.Method atMethodCallCore(CtClass targetClass, java.lang.String mname, ASTList args) throws CompileError
- Returns:
- a pair of the class declaring the invoked method and the MethodInfo of that method. Never null.
- Throws:
CompileError
-
getMethodArgsLength
public int getMethodArgsLength(ASTList args)
-
atMethodArgs
public void atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames) throws CompileError
- Throws:
CompileError
-
setReturnType
void setReturnType(java.lang.String desc) throws CompileError- Throws:
CompileError
-
atFieldRead
private void atFieldRead(ASTree expr) throws CompileError
- Throws:
CompileError
-
atFieldRead
private void atFieldRead(CtField f) throws CompileError
- Throws:
CompileError
-
fieldAccess
protected CtField fieldAccess(ASTree expr) throws CompileError
- Throws:
CompileError
-
fieldAccess2
private CtField fieldAccess2(Expr e, java.lang.String jvmClassName) throws CompileError
- Throws:
CompileError
-
atClassObject
public void atClassObject(Expr expr) throws CompileError
- Throws:
CompileError
-
atArrayLength
public void atArrayLength(Expr expr) throws CompileError
- Throws:
CompileError
-
atArrayRead
public void atArrayRead(ASTree array, ASTree index) throws CompileError
- Throws:
CompileError
-
atPlusPlus
private void atPlusPlus(int token, ASTree oprand, Expr expr) throws CompileError- Throws:
CompileError
-
atFieldPlusPlus
protected void atFieldPlusPlus(ASTree oprand) throws CompileError
- Throws:
CompileError
-
atMember
public void atMember(Member mem) throws CompileError
- Overrides:
atMemberin classVisitor- Throws:
CompileError
-
atVariable
public void atVariable(Variable v) throws CompileError
- Overrides:
atVariablein classVisitor- Throws:
CompileError
-
atKeyword
public void atKeyword(Keyword k) throws CompileError
- Overrides:
atKeywordin classVisitor- Throws:
CompileError
-
atStringL
public void atStringL(StringL s) throws CompileError
- Overrides:
atStringLin classVisitor- Throws:
CompileError
-
atIntConst
public void atIntConst(IntConst i) throws CompileError
- Overrides:
atIntConstin classVisitor- Throws:
CompileError
-
atDoubleConst
public void atDoubleConst(DoubleConst d) throws CompileError
- Overrides:
atDoubleConstin classVisitor- Throws:
CompileError
-
-