Package javassist.compiler
Class TypeChecker
- java.lang.Object
-
- javassist.compiler.ast.Visitor
-
- javassist.compiler.TypeChecker
-
-
Field Summary
Fields Modifier and Type Field Description protected int
arrayDim
protected java.lang.String
className
protected int
exprType
(package private) static java.lang.String
javaLangObject
(package private) static java.lang.String
jvmJavaLangClass
(package private) static java.lang.String
jvmJavaLangObject
(package private) static java.lang.String
jvmJavaLangString
protected MemberResolver
resolver
protected CtClass
thisClass
protected MethodInfo
thisMethod
-
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.String
argTypesToString(int[] types, int[] dims, java.lang.String[] cnames)
private void
atArrayAssign(Expr expr, int op, Expr array, ASTree right)
void
atArrayInit(ArrayInit init)
void
atArrayLength(Expr expr)
void
atArrayRead(ASTree array, ASTree index)
void
atAssignExpr(AssignExpr expr)
void
atBinExpr(BinExpr expr)
void
atCallExpr(CallExpr expr)
void
atCastExpr(CastExpr expr)
void
atClassObject(Expr expr)
void
atCondExpr(CondExpr expr)
void
atDoubleConst(DoubleConst d)
void
atExpr(Expr expr)
protected void
atFieldAssign(Expr expr, int op, ASTree left, ASTree right)
protected void
atFieldPlusPlus(ASTree oprand)
private void
atFieldRead(ASTree expr)
private void
atFieldRead(CtField f)
void
atInstanceOfExpr(InstanceOfExpr expr)
void
atIntConst(IntConst i)
void
atKeyword(Keyword k)
void
atMember(Member mem)
void
atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames)
MemberResolver.Method
atMethodCallCore(CtClass targetClass, java.lang.String mname, ASTList args)
protected void
atMultiNewArray(int type, ASTList classname, ASTList size)
void
atNewArrayExpr(NewExpr expr)
void
atNewExpr(NewExpr expr)
private Expr
atPlusExpr(BinExpr expr)
private void
atPlusPlus(int token, ASTree oprand, Expr expr)
void
atStringL(StringL s)
void
atVariable(Variable v)
private void
atVariableAssign(Expr expr, int op, Variable var, Declarator d, ASTree right)
private static void
badMethod()
private void
booleanExpr(ASTree expr)
private void
computeBinExprType(BinExpr expr, int token, int type1)
protected static void
fatal()
protected CtField
fieldAccess(ASTree expr)
private CtField
fieldAccess2(Expr e, java.lang.String jvmClassName)
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.static ASTree
getConstantFieldValue(CtField f)
int
getMethodArgsLength(ASTList args)
protected java.lang.String
getSuperName()
Returns the JVM-internal representation of this super class name.protected java.lang.String
getThisName()
Returns the JVM-internal representation of this class name.private void
insertCast(BinExpr expr, int type1, int type2)
private boolean
isConstant(BinExpr expr, int op, ASTree left, ASTree right)
private boolean
isConstant(Expr expr, int op, ASTree oprand)
(package private) 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.private static boolean
isPlusExpr(ASTree expr)
private static Expr
makeAppendCall(ASTree target, ASTree arg)
protected java.lang.String
resolveClassName(java.lang.String jvmName)
protected java.lang.String
resolveClassName(ASTList name)
(package private) void
setReturnType(java.lang.String desc)
void
setThisMethod(MethodInfo m)
Records the currently compiled method.(package private) static ASTree
stripPlusExpr(ASTree expr)
protected static java.lang.StringBuilder
typeToString(java.lang.StringBuilder 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.StringBuilder typeToString(java.lang.StringBuilder 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 CompileError
Returns 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:
atNewExpr
in classVisitor
- Throws:
CompileError
-
atNewArrayExpr
public void atNewArrayExpr(NewExpr expr) throws CompileError
- Throws:
CompileError
-
atArrayInit
public void atArrayInit(ArrayInit init) throws CompileError
- Overrides:
atArrayInit
in 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:
atAssignExpr
in 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:
atCondExpr
in classVisitor
- Throws:
CompileError
-
atBinExpr
public void atBinExpr(BinExpr expr) throws CompileError
- Overrides:
atBinExpr
in 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:
atCastExpr
in classVisitor
- Throws:
CompileError
-
atInstanceOfExpr
public void atInstanceOfExpr(InstanceOfExpr expr) throws CompileError
- Overrides:
atInstanceOfExpr
in classVisitor
- Throws:
CompileError
-
atExpr
public void atExpr(Expr expr) throws CompileError
- Overrides:
atExpr
in classVisitor
- Throws:
CompileError
-
atCallExpr
public void atCallExpr(CallExpr expr) throws CompileError
- Overrides:
atCallExpr
in 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
.super
or 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:
atMember
in classVisitor
- Throws:
CompileError
-
atVariable
public void atVariable(Variable v) throws CompileError
- Overrides:
atVariable
in classVisitor
- Throws:
CompileError
-
atKeyword
public void atKeyword(Keyword k) throws CompileError
- Overrides:
atKeyword
in classVisitor
- Throws:
CompileError
-
atStringL
public void atStringL(StringL s) throws CompileError
- Overrides:
atStringL
in classVisitor
- Throws:
CompileError
-
atIntConst
public void atIntConst(IntConst i) throws CompileError
- Overrides:
atIntConst
in classVisitor
- Throws:
CompileError
-
atDoubleConst
public void atDoubleConst(DoubleConst d) throws CompileError
- Overrides:
atDoubleConst
in classVisitor
- Throws:
CompileError
-
-