/** @deprecated using deprecated code */ public void testCharacterLiteral() throws Exception { IPackageFragment pack1 = this.sourceFolder.createPackageFragment("test1", false, null); StringBuffer buf = new StringBuffer(); buf.append(" function foo() {\n"); buf.append(" return 'x';\n"); buf.append(" }\n"); IJavaScriptUnit cu = pack1.createCompilationUnit("E.js", buf.toString(), false, null); JavaScriptUnit astRoot = createAST(cu); ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST()); assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0); // TypeDeclaration type= findTypeDeclaration(astRoot, "E"); FunctionDeclaration methodDecl = findMethodDeclaration(astRoot, "foo"); Block block = methodDecl.getBody(); List statements = block.statements(); assertTrue("Number of statements not 1", statements.size() == 1); { // replace number ReturnStatement returnStatement = (ReturnStatement) statements.get(0); StringLiteral literal = (StringLiteral) returnStatement.getExpression(); rewrite.set(literal, StringLiteral.ESCAPED_VALUE_PROPERTY, "'y'", null); } String preview = evaluateRewrite(cu, rewrite); buf = new StringBuffer(); buf.append(" function foo() {\n"); buf.append(" return 'y';\n"); buf.append(" }\n"); assertEqualString(preview, buf.toString()); }
/** @deprecated using deprecated code */ public void testSimpleName() throws Exception { IPackageFragment pack1 = this.sourceFolder.createPackageFragment("test1", false, null); StringBuffer buf = new StringBuffer(); buf.append(" function foo(hello) {\n"); buf.append(" return hello;\n"); buf.append(" }\n"); IJavaScriptUnit cu = pack1.createCompilationUnit("E.js", buf.toString(), false, null); JavaScriptUnit astRoot = createAST(cu); ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST()); assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0); // TypeDeclaration type= findTypeDeclaration(astRoot, "E"); FunctionDeclaration methodDecl = findMethodDeclaration(astRoot, "foo"); Block block = methodDecl.getBody(); List statements = block.statements(); assertTrue("Number of statements not 1", statements.size() == 1); { // replace identifier ReturnStatement returnStatement = (ReturnStatement) statements.get(0); SimpleName simpleName = (SimpleName) returnStatement.getExpression(); rewrite.set(simpleName, SimpleName.IDENTIFIER_PROPERTY, "changed", null); } String preview = evaluateRewrite(cu, rewrite); buf = new StringBuffer(); buf.append(" function foo(hello) {\n"); buf.append(" return changed;\n"); buf.append(" }\n"); assertEqualString(preview, buf.toString()); }
/* * @see ASTVisitor#visit(ReturnStatement) */ public boolean visit(ReturnStatement node) { this.fBuffer.append("return"); // $NON-NLS-1$ if (node.getExpression() != null) { this.fBuffer.append(" "); // $NON-NLS-1$ node.getExpression().accept(this); } this.fBuffer.append(";"); // $NON-NLS-1$ return false; }
// TODO fix public void XtestThisExpression() throws Exception { IPackageFragment pack1 = this.sourceFolder.createPackageFragment("test1", false, null); StringBuffer buf = new StringBuffer(); buf.append("function foo() {\n"); buf.append(" return this;\n"); buf.append(" return Outer.this;\n"); buf.append("}\n"); IJavaScriptUnit cu = pack1.createCompilationUnit("E.js", buf.toString(), false, null); JavaScriptUnit astRoot = createAST(cu); ASTRewrite rewrite = ASTRewrite.create(astRoot.getAST()); AST ast = astRoot.getAST(); assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0); FunctionDeclaration methodDecl = findMethodDeclaration(astRoot, "foo"); Block block = methodDecl.getBody(); List statements = block.statements(); assertTrue("Number of statements not 2", statements.size() == 2); { // add qualifier ReturnStatement returnStatement = (ReturnStatement) statements.get(0); ThisExpression thisExpression = (ThisExpression) returnStatement.getExpression(); SimpleName newExpression = ast.newSimpleName("X"); rewrite.set(thisExpression, ThisExpression.QUALIFIER_PROPERTY, newExpression, null); } { // remove qualifier ReturnStatement returnStatement = (ReturnStatement) statements.get(1); ThisExpression thisExpression = (ThisExpression) returnStatement.getExpression(); rewrite.remove(thisExpression.getQualifier(), null); } String preview = evaluateRewrite(cu, rewrite); buf = new StringBuffer(); buf.append(" function foo() {\n"); buf.append(" return X.this;\n"); buf.append(" return this;\n"); buf.append(" }\n"); assertEqualString(preview, buf.toString()); }