use of org.eclipse.jdt.core.dom.Block in project AutoRefactor by JnRouvignac.
the class RemoveEmptyLinesRefactoring method visit.
@Override
public boolean visit(MethodDeclaration node) {
final Block body = node.getBody();
if (body == null) {
return VISIT_SUBTREE;
}
int openingCurlyIndex = body.getStartPosition();
if (openingCurlyOnSameLineAsEndOfNode(node, openingCurlyIndex)) {
return VISIT_SUBTREE;
}
if (maybeRemoveEmptyLinesAfterCurly(node, openingCurlyIndex)) {
return DO_NOT_VISIT_SUBTREE;
}
return visit(body);
}
use of org.eclipse.jdt.core.dom.Block in project xtext-xtend by eclipse.
the class JavaASTFlattener method visit.
@Override
public boolean visit(final TryStatement node) {
this.appendToBuffer("try ");
final List<ASTNode> resources = this._aSTFlattenerUtils.genericChildListProperty(node, "resources");
boolean _isNullOrEmpty = IterableExtensions.isNullOrEmpty(resources);
boolean _not = (!_isNullOrEmpty);
if (_not) {
this.appendToBuffer("(");
for (final ASTNode child : resources) {
child.accept(this);
}
this.appendToBuffer(")");
this.addProblem(node, "Try with resource is not yet supported.");
}
node.getBody().accept(this);
final Consumer<Object> _function = (Object it) -> {
((ASTNode) it).accept(this);
};
node.catchClauses().forEach(_function);
Block _finally = node.getFinally();
boolean _tripleNotEquals = (_finally != null);
if (_tripleNotEquals) {
this.appendToBuffer(" finally ");
node.getFinally().accept(this);
} else {
this.appendLineWrapToBuffer();
}
return false;
}
use of org.eclipse.jdt.core.dom.Block in project xtext-xtend by eclipse.
the class JavaASTFlattener method visit.
@Override
public boolean visit(final MethodDeclaration it) {
Javadoc _javadoc = it.getJavadoc();
boolean _tripleNotEquals = (_javadoc != null);
if (_tripleNotEquals) {
it.getJavadoc().accept(this);
}
final Function1<ASTNode, StringBuffer> _function = (ASTNode node) -> {
StringBuffer _xifexpression = null;
if ((node instanceof MethodDeclaration)) {
StringBuffer _xifexpression_1 = null;
boolean _isConstructor = ((MethodDeclaration) node).isConstructor();
boolean _not = (!_isConstructor);
if (_not) {
StringBuffer _xifexpression_2 = null;
boolean _isOverrideMethod = this._aSTFlattenerUtils.isOverrideMethod(((MethodDeclaration) node));
if (_isOverrideMethod) {
_xifexpression_2 = this.appendToBuffer("override ");
} else {
_xifexpression_2 = this.appendToBuffer("def ");
}
_xifexpression_1 = _xifexpression_2;
}
_xifexpression = _xifexpression_1;
}
return _xifexpression;
};
final Function1<ASTNode, StringBuffer> afterAnnotationProcessingCallback = _function;
this.appendModifiers(it, it.modifiers(), afterAnnotationProcessingCallback);
boolean _isPackageVisibility = this._aSTFlattenerUtils.isPackageVisibility(Iterables.<Modifier>filter(it.modifiers(), Modifier.class));
if (_isPackageVisibility) {
ASTNode _parent = it.getParent();
if ((_parent instanceof TypeDeclaration)) {
ASTNode _parent_1 = it.getParent();
boolean _isInterface = ((TypeDeclaration) _parent_1).isInterface();
boolean _not = (!_isInterface);
if (_not) {
this.appendToBuffer("package ");
}
}
}
boolean _isConstructor = it.isConstructor();
if (_isConstructor) {
this.appendToBuffer(" new");
}
boolean _isEmpty = it.typeParameters().isEmpty();
boolean _not_1 = (!_isEmpty);
if (_not_1) {
boolean _isConstructor_1 = it.isConstructor();
if (_isConstructor_1) {
this.addProblem(it, "Type parameters for constructors are not supported");
}
this.appendTypeParameters(it.typeParameters());
}
boolean _isConstructor_2 = it.isConstructor();
boolean _not_2 = (!_isConstructor_2);
if (_not_2) {
Type _returnType2 = it.getReturnType2();
boolean _tripleNotEquals_1 = (_returnType2 != null);
if (_tripleNotEquals_1) {
it.getReturnType2().accept(this);
} else {
this.appendToBuffer("void");
}
this.appendSpaceToBuffer();
it.getName().accept(this);
}
this.appendToBuffer("(");
final Consumer<SingleVariableDeclaration> _function_1 = (SingleVariableDeclaration p) -> {
Boolean _isAssignedInBody = this._aSTFlattenerUtils.isAssignedInBody(it.getBody(), p.getName());
if ((_isAssignedInBody).booleanValue()) {
if ((it.isConstructor() && (!it.getBody().statements().isEmpty()))) {
final Expression firstInBody = IterableExtensions.<Expression>head(this._aSTFlattenerUtils.findAssignmentsInBlock(it.getBody(), p));
if ((firstInBody != null)) {
ConstructorInvocation _findParentOfType = this._aSTFlattenerUtils.<ConstructorInvocation>findParentOfType(firstInBody, ConstructorInvocation.class);
boolean _tripleNotEquals_2 = (_findParentOfType != null);
if (_tripleNotEquals_2) {
this.addProblem(p, "Final parameter modified in constructor call");
} else {
SuperConstructorInvocation _findParentOfType_1 = this._aSTFlattenerUtils.<SuperConstructorInvocation>findParentOfType(firstInBody, SuperConstructorInvocation.class);
boolean _tripleNotEquals_3 = (_findParentOfType_1 != null);
if (_tripleNotEquals_3) {
this.addProblem(p, "Final parameter modified in super constructor call");
}
}
}
}
final VariableDeclarationFragment varFrag = p.getAST().newVariableDeclarationFragment();
varFrag.setName(p.getAST().newSimpleName(p.getName().toString()));
AST _aST = p.getAST();
SimpleName _name = p.getName();
String _plus = (_name + "_finalParam_");
p.setName(_aST.newSimpleName(_plus));
varFrag.setInitializer(p.getAST().newSimpleName(p.getName().toString()));
final VariableDeclarationStatement varDecl = p.getAST().newVariableDeclarationStatement(varFrag);
ASTNode _createInstance = p.getAST().createInstance(SimpleType.class);
final Type typeCopy = ((Type) _createInstance);
varDecl.setType(typeCopy);
it.getBody().statements().add(0, varDecl);
}
};
ListExtensions.<SingleVariableDeclaration>reverseView(it.parameters()).forEach(_function_1);
this.visitAllSeparatedByComma(it.parameters());
this.appendToBuffer(")");
this.appendExtraDimensions(it.getExtraDimensions());
List<? extends ASTNode> throwsTypes = CollectionLiterals.<ASTNode>newArrayList();
boolean _java8orHigher = this.java8orHigher();
boolean _not_3 = (!_java8orHigher);
if (_not_3) {
throwsTypes = it.thrownExceptions();
} else {
throwsTypes = this._aSTFlattenerUtils.genericChildListProperty(it, "thrownExceptionTypes");
}
boolean _isEmpty_1 = throwsTypes.isEmpty();
boolean _not_4 = (!_isEmpty_1);
if (_not_4) {
this.appendToBuffer(" throws ");
this.visitAllSeparatedByComma(throwsTypes);
}
this.appendSpaceToBuffer();
Block _body = it.getBody();
boolean _tripleNotEquals_2 = (_body != null);
if (_tripleNotEquals_2) {
it.getBody().accept(this);
} else {
this.appendLineWrapToBuffer();
}
return false;
}
use of org.eclipse.jdt.core.dom.Block in project xtext-xtend by eclipse.
the class JavaConverter method statementToXtend.
/**
* @param javaSrc Java class source code as String
* @param classPathContext Contextual object from where to get the classpath entries (e.g. IProject in eclipse Module in idea)
*/
public JavaConverter.ConversionResult statementToXtend(final String javaSrc, final Object classPathContext) {
final ASTParserFactory.ASTParserWrapper parser = this.astParserFactory.createJavaParser(classPathContext);
parser.setSource(javaSrc.toCharArray());
parser.setKind(ASTParser.K_STATEMENTS);
final ASTNode root = parser.createAST();
if ((root instanceof Block)) {
return this.executeAstFlattener(javaSrc, root, parser.getTargetLevel(), true);
}
return this.executeAstFlattener(javaSrc, root, parser.getTargetLevel(), false);
}
use of org.eclipse.jdt.core.dom.Block in project AutoRefactor by JnRouvignac.
the class ReduceVariableScopeRefactoring method replace.
private void replace(VariableAccess varDecl, VariableAccess varAccess) {
final ASTBuilder b = this.ctx.getASTBuilder();
final AST ast = b.getAST();
final ASTNode scope = varAccess.getScope();
final Name varName = varAccess.getVariableName();
final Type varType = getType(varDecl.getVariableName().getParent());
if (scope instanceof Block) {
final List<Statement> stmts = statements((Block) scope);
for (int i = 0; i < stmts.size(); i++) {
final Statement stmt = stmts.get(i);
// FIXME i=0
final Expression parentExpr = getAncestor(varName, Expression.class);
// FIXME i=0
final Statement parentStmt = getAncestor(parentExpr, Statement.class);
if (stmt.equals(parentStmt)) {
final VariableDeclarationFragment vdf = getVariableDeclarationFragment(parentExpr, varName);
final VariableDeclarationStatement vds = ast.newVariableDeclarationStatement(vdf);
vds.setType(varType);
this.ctx.getRefactorings().replace(stmt, vds);
break;
}
}
} else if (scope instanceof EnhancedForStatement) {
final EnhancedForStatement efs = (EnhancedForStatement) scope;
final EnhancedForStatement newEfs = b.copy(efs);
newEfs.setParameter(b.copy(efs.getParameter()));
newEfs.setExpression(b.copy(efs.getExpression()));
final Statement parentStmt = getAncestor(varName, Statement.class);
if (equalNotNull(efs.getBody(), parentStmt)) {
newEfs.setBody(copy(efs.getBody(), varName));
}
this.ctx.getRefactorings().replace(efs, newEfs);
} else if (scope instanceof ForStatement) {
final ForStatement fs = (ForStatement) scope;
final ForStatement newFs = b.copy(fs);
final List<Expression> initializers = initializers(newFs);
if (initializers.size() == 1) {
final Expression init = initializers.remove(0);
final VariableDeclarationFragment vdf = getVariableDeclarationFragment(init, varName);
final VariableDeclarationExpression vde = ast.newVariableDeclarationExpression(vdf);
vde.setType(varType);
initializers.add(vde);
this.ctx.getRefactorings().replace(fs, newFs);
// TODO JNR
// if (equalNotNull(fs.getBody(), parentStmt)) {
// newFs.setBody(copy(fs.getBody()));
// }
} else {
throw new NotImplementedException(scope, "for more than one initializer in for loop.");
}
} else if (scope instanceof WhileStatement) {
final WhileStatement ws = (WhileStatement) scope;
final WhileStatement newWs = ast.newWhileStatement();
newWs.setExpression(b.copy(ws.getExpression()));
final Statement parentStmt = getAncestor(varName, Statement.class);
if (equalNotNull(ws.getBody(), parentStmt)) {
newWs.setBody(copy(ws.getBody(), varName));
}
this.ctx.getRefactorings().replace(ws, newWs);
} else if (scope instanceof IfStatement) {
final IfStatement is = (IfStatement) scope;
final IfStatement newIs = ast.newIfStatement();
newIs.setExpression(b.copy(is.getExpression()));
final Statement parentStmt = getAncestor(varName, Statement.class);
if (equalNotNull(is.getThenStatement(), parentStmt)) {
newIs.setThenStatement(copy(is.getThenStatement(), varName));
if (is.getElseStatement() != null) {
newIs.setElseStatement(b.copy(is.getElseStatement()));
}
this.ctx.getRefactorings().replace(is, newIs);
} else if (equalNotNull(is.getElseStatement(), parentStmt)) {
if (is.getThenStatement() != null) {
newIs.setThenStatement(b.copy(is.getThenStatement()));
}
newIs.setElseStatement(copy(is.getElseStatement(), varName));
this.ctx.getRefactorings().replace(is, newIs);
} else {
throw new IllegalStateException(is, "Parent statement should be inside the then or else statement of this if statement: " + is);
}
} else {
throw new NotImplementedException(scope);
}
}
Aggregations