SimpleName tempName= fCURewrite.getAST().newSimpleName(fTempName);
TextEditGroup description= fCURewrite.createGroupDescription(RefactoringCoreMessages.ExtractTempRefactoring_replace);
-
-
-
/*
- * Anna's hacky code from here
+ * Anna's code from here
*/
- //TODO: some clever way of iterating over parents?
- ASTNode associatedNode = fragment.getAssociatedNode().getParent().getParent();
-
- //For debugging (do this with a while loop later)
- Object a1 = fragment.getAssociatedNode();
- Object a = fragment.getAssociatedNode().getClass();
- Object b1 = fragment.getAssociatedNode().getParent();
- Object b = fragment.getAssociatedNode().getParent().getClass();
- Object c1 = fragment.getAssociatedNode().getParent().getParent();
- Object c = fragment.getAssociatedNode().getParent().getParent().getClass();
- ASTNode d1 = fragment.getAssociatedNode().getParent().getParent();
- Object d = fragment.getAssociatedNode().getParent().getParent().getClass();
- ASTNode block1 = fragment.getAssociatedNode().getParent().getParent().getParent();
- Object blockClass = fragment.getAssociatedNode().getParent().getParent().getParent().getClass();
-
-
- AST ast = block1.getAST();
-
- ASTRewrite ASTRewriteStmt = ASTRewrite.create(ast);
- //ListRewrite lr = ASTRewriteStmt.getListRewrite(block1, Block.STATEMENTS_PROPERTY);
- ListRewrite lr = rewrite.getListRewrite(block1, Block.STATEMENTS_PROPERTY);
- List<ASTNode> ls = lr.getOriginalList();
- ASTNode first = ls.get(0);
+ ASTNode block = fragment.getAssociatedNode();
+ while(! (block instanceof Block)){
+ block = block.getParent();
+ }
- boolean check = first == d1;
+ ASTNode exprstatement = fragment.getAssociatedNode();
+ while( ! (exprstatement instanceof ExpressionStatement)){
+ exprstatement = exprstatement.getParent();
+ }
- lr.insertBefore(getAssertStatement(ast), d1, null);
+ ListRewrite lr = rewrite.getListRewrite(block, Block.STATEMENTS_PROPERTY);
- //ASTRewriteStmt.rewriteAST(fCompilationUnitNode, null).apply(fCompilationUnitNode);
+ lr.insertBefore(getAssertStatement(block.getAST()), exprstatement, null);
/*
- * Eclipse code from here
+ * End of Anna's code
*/
+
fragment.replace(rewrite, tempName, description);
if (fLinkedProposalModel != null)
}
}
+ /**
+ *
+ * @param ast the AST the Statement will belong to
+ * @return the assert statement, belonging to the input AST, used to check if the code is broken
+ */
private Statement getAssertStatement(AST ast){
- //Make the assertion
AssertStatement assertStatement = ast.newAssertStatement();
InfixExpression infixExpression = ast.newInfixExpression();