public boolean isDebugger() { return node.getType() == Token.DEBUGGER; } }
public boolean isNull() { return node.getType() == Token.NULL; }
public boolean isThis() { return node.getType() == Token.THIS; }
public ASTKeywordLiteral(KeywordLiteral keywordLiteral) { super(keywordLiteral); super.setImage(Token.typeToName(keywordLiteral.getType()).toLowerCase(Locale.ROOT)); }
@Override public String toSource(int depth) { StringBuilder sb = new StringBuilder(); sb.append(makeIndent(depth)); switch (getType()) { case Token.THIS: sb.append("this"); break; case Token.NULL: sb.append("null"); break; case Token.TRUE: sb.append("true"); break; case Token.FALSE: sb.append("false"); break; case Token.DEBUGGER: sb.append("debugger;\n"); break; default: throw new IllegalStateException("Invalid keyword literal type: " + getType()); } return sb.toString(); }
@Override public String toSource(int depth) { StringBuilder sb = new StringBuilder(); sb.append(makeIndent(depth)); switch (getType()) { case Token.THIS: sb.append("this"); break; case Token.NULL: sb.append("null"); break; case Token.TRUE: sb.append("true"); break; case Token.FALSE: sb.append("false"); break; case Token.DEBUGGER: sb.append("debugger;\n"); break; default: throw new IllegalStateException("Invalid keyword literal type: " + getType()); } return sb.toString(); }
@Override public String toSource(int depth) { StringBuilder sb = new StringBuilder(); sb.append(makeIndent(depth)); switch (getType()) { case Token.THIS: sb.append("this"); break; case Token.NULL: sb.append("null"); break; case Token.TRUE: sb.append("true"); break; case Token.FALSE: sb.append("false"); break; case Token.DEBUGGER: sb.append("debugger;\n"); break; default: throw new IllegalStateException("Invalid keyword literal type: " + getType()); } return sb.toString(); }
@Override public String toSource(int depth) { StringBuilder sb = new StringBuilder(); sb.append(makeIndent(depth)); switch (getType()) { case Token.THIS: sb.append("this"); break; case Token.NULL: sb.append("null"); break; case Token.TRUE: sb.append("true"); break; case Token.FALSE: sb.append("false"); break; case Token.DEBUGGER: sb.append("debugger;\n"); break; default: throw new IllegalStateException("Invalid keyword literal type: " + getType()); } return sb.toString(); }
@Override public CAstNode visitKeywordLiteral(KeywordLiteral node, WalkContext arg) { switch (node.getType()) { case Token.THIS: { if (arg.top() instanceof ScriptNode && !(arg.top() instanceof FunctionNode)) { CAstNode globalRef = makeVarRef(JSSSAPropagationCallGraphBuilder.GLOBAL_OBJ_VAR_NAME); arg.cfg().map(globalRef, globalRef); return globalRef; } else { return Ast.makeNode(CAstNode.VAR, Ast.makeConstant("this")); } } case Token.TRUE: { return Ast.makeConstant(true); } case Token.FALSE: { return Ast.makeConstant(false); } case Token.NULL: { return Ast.makeConstant(null); } case Token.DEBUGGER: { return Ast.makeConstant(null); } default: throw new RuntimeException("unexpected keyword literal " + node + " (" + node.getType() + ')'); } }