Package javassist.compiler
Class TypeChecker
java.lang.Object
javassist.compiler.ast.Visitor
javassist.compiler.TypeChecker
- Direct Known Subclasses:
JvstTypeChecker
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int
protected String
protected int
(package private) static final String
(package private) static final String
(package private) static final String
(package private) static final String
protected MemberResolver
protected CtClass
protected MethodInfo
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 -
Method Summary
Modifier and TypeMethodDescriptionprotected static String
argTypesToString
(int[] types, int[] dims, 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
void
atCallExpr
(CallExpr expr) void
atCastExpr
(CastExpr expr) void
atClassObject
(Expr expr) void
atCondExpr
(CondExpr expr) void
void
protected void
atFieldAssign
(Expr expr, int op, ASTree left, ASTree right) protected void
atFieldPlusPlus
(ASTree oprand) private void
atFieldRead
(ASTree expr) private void
void
void
void
void
void
atMethodArgs
(ASTList args, int[] types, int[] dims, String[] cnames) atMethodCallCore
(CtClass targetClass, String mname, ASTList args) protected void
atMultiNewArray
(int type, ASTList classname, ASTList size) void
atNewArrayExpr
(NewExpr expr) void
private Expr
atPlusExpr
(BinExpr expr) private void
atPlusPlus
(int token, ASTree oprand, Expr expr) void
void
private void
atVariableAssign
(Expr expr, int op, Variable var, Declarator d, ASTree right) private static void
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, String jvmClassName) private static ASTree
If MEM is a static final field, this method returns a constant expression representing the value of that field.static ASTree
int
getMethodArgsLength
(ASTList args) protected String
Returns the JVM-internal representation of this super class name.protected String
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 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 String
resolveClassName
(String jvmName) protected String
resolveClassName
(ASTList name) (package private) void
setReturnType
(String desc) void
Records the currently compiled method.(package private) static ASTree
stripPlusExpr
(ASTree expr) protected static StringBuilder
typeToString
(StringBuilder sbuf, int type, int dim, String cname) Methods inherited from class javassist.compiler.ast.Visitor
atASTList, atDeclarator, atFieldDecl, atMethodDecl, atPair, atStmnt, atSymbol
-
Field Details
-
javaLangObject
- See Also:
-
jvmJavaLangObject
- See Also:
-
jvmJavaLangString
- See Also:
-
jvmJavaLangClass
- See Also:
-
exprType
protected int exprType -
arrayDim
protected int arrayDim -
className
-
resolver
-
thisClass
-
thisMethod
-
-
Constructor Details
-
TypeChecker
-
-
Method Details
-
argTypesToString
-
typeToString
-
setThisMethod
Records the currently compiled method. -
fatal
- Throws:
CompileError
-
getThisName
Returns the JVM-internal representation of this class name. -
getSuperName
Returns the JVM-internal representation of this super class name.- Throws:
CompileError
-
resolveClassName
- Throws:
CompileError
-
resolveClassName
- Throws:
CompileError
-
atNewExpr
- Overrides:
atNewExpr
in classVisitor
- Throws:
CompileError
-
atNewArrayExpr
- Throws:
CompileError
-
atArrayInit
- Overrides:
atArrayInit
in classVisitor
- Throws:
CompileError
-
atMultiNewArray
- Throws:
CompileError
-
atAssignExpr
- 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
- Throws:
CompileError
-
atFieldAssign
- Throws:
CompileError
-
atCondExpr
- Overrides:
atCondExpr
in classVisitor
- Throws:
CompileError
-
atBinExpr
- Overrides:
atBinExpr
in classVisitor
- Throws:
CompileError
-
atPlusExpr
- Throws:
CompileError
-
isConstant
- Throws:
CompileError
-
stripPlusExpr
-
getConstantFieldValue
If MEM is a static final field, this method returns a constant expression representing the value of that field. -
getConstantFieldValue
-
isPlusExpr
-
makeAppendCall
-
computeBinExprType
- Throws:
CompileError
-
booleanExpr
- Throws:
CompileError
-
insertCast
- Throws:
CompileError
-
atCastExpr
- Overrides:
atCastExpr
in classVisitor
- Throws:
CompileError
-
atInstanceOfExpr
- Overrides:
atInstanceOfExpr
in classVisitor
- Throws:
CompileError
-
atExpr
- Overrides:
atExpr
in classVisitor
- Throws:
CompileError
-
isConstant
-
atCallExpr
- Overrides:
atCallExpr
in classVisitor
- Throws:
CompileError
-
badMethod
- Throws:
CompileError
-
isDotSuper
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, 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
-
atMethodArgs
public void atMethodArgs(ASTList args, int[] types, int[] dims, String[] cnames) throws CompileError - Throws:
CompileError
-
setReturnType
- Throws:
CompileError
-
atFieldRead
- Throws:
CompileError
-
atFieldRead
- Throws:
CompileError
-
fieldAccess
- Throws:
CompileError
-
fieldAccess2
- Throws:
CompileError
-
atClassObject
- Throws:
CompileError
-
atArrayLength
- Throws:
CompileError
-
atArrayRead
- Throws:
CompileError
-
atPlusPlus
- Throws:
CompileError
-
atFieldPlusPlus
- Throws:
CompileError
-
atMember
- Overrides:
atMember
in classVisitor
- Throws:
CompileError
-
atVariable
- Overrides:
atVariable
in classVisitor
- Throws:
CompileError
-
atKeyword
- Overrides:
atKeyword
in classVisitor
- Throws:
CompileError
-
atStringL
- Overrides:
atStringL
in classVisitor
- Throws:
CompileError
-
atIntConst
- Overrides:
atIntConst
in classVisitor
- Throws:
CompileError
-
atDoubleConst
- Overrides:
atDoubleConst
in classVisitor
- Throws:
CompileError
-