Skip to content

Commit

Permalink
refactor(clone): Adds the handy CtElement#clone (and deprecates CoreF…
Browse files Browse the repository at this point in the history
…actory#clone)
  • Loading branch information
GerardPaligot authored and monperrus committed May 26, 2016
1 parent 6e44a66 commit bc798c1
Show file tree
Hide file tree
Showing 191 changed files with 895 additions and 280 deletions.
6 changes: 3 additions & 3 deletions src/main/java/spoon/generating/replace/ReplaceScanner.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public <T> void visitCtMethod(CtMethod<T> element) {
}

Factory factory = element.getFactory();
CtMethod<T> clone = factory.Core().clone(element);
CtMethod<T> clone = element.clone();
clone.getBody().getStatements().clear();
for (int i = 1; i < element.getBody().getStatements().size() - 1; i++) {
CtInvocation inv = element.getBody().getStatement(i);
Expand Down Expand Up @@ -129,7 +129,7 @@ private CtTypeReference getGetterType(Factory factory, CtInvocation getter) {
if (type instanceof CtTypeParameterReference) {
getterType = getTypeFromTypeParameterReference((CtTypeParameterReference) getter.getExecutable().getDeclaration().getType());
} else {
getterType = factory.Core().clone(type);
getterType = type.clone();
}
getterType.getActualTypeArguments().clear();
return getterType;
Expand All @@ -153,7 +153,7 @@ private CtTypeReference getTypeFromTypeParameterReference(CtTypeParameterReferen

private CtClass createListenerClass(Factory factory, String listenerName, CtTypeReference getterType, Type type) {
CtClass listener;
listener = factory.Core().clone(factory.Class().get(GENERATING_REPLACE_PACKAGE + ".CtListener"));
listener = factory.Class().get(GENERATING_REPLACE_PACKAGE + ".CtListener").clone();
listener.setSimpleName(listenerName);
target.addNestedType(listener);
final List<CtTypeReference> references = listener.getReferences(new ReferenceFilter<CtTypeReference>() {
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/spoon/reflect/code/CtAnnotationFieldAccess.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
* @param <T>
* Type of this field
*/
public interface CtAnnotationFieldAccess<T>
extends CtVariableRead<T>, CtTargetedExpression<T, CtExpression<?>> {
public interface CtAnnotationFieldAccess<T> extends CtVariableRead<T>, CtTargetedExpression<T, CtExpression<?>> {
CtFieldReference<T> getVariable();

@Override
CtAnnotationFieldAccess<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtArrayAccess.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,7 @@ public interface CtArrayAccess<T, E extends CtExpression<?>> extends CtTargetedE
* Returns the expression that defines the index.
*/
CtExpression<Integer> getIndexExpression();

@Override
CtArrayAccess<T, E> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtArrayRead.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,6 @@
* type of the array
*/
public interface CtArrayRead<T> extends CtArrayAccess<T, CtExpression<?>> {
@Override
CtArrayRead<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtArrayWrite.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@
* type of the array
*/
public interface CtArrayWrite<T> extends CtArrayAccess<T, CtExpression<?>> {
@Override
CtArrayWrite<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtAssert.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,7 @@ public interface CtAssert<T> extends CtStatement {
* Sets the expression of the assertion.
*/
<A extends CtAssert<T>> A setExpression(CtExpression<T> expression);

@Override
CtAssert<T> clone();
}
6 changes: 4 additions & 2 deletions src/main/java/spoon/reflect/code/CtAssignment.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
* @param <A>
* type of expression to assign, it should extends &lt;T&gt;
*/
public interface CtAssignment<T, A extends T>
extends CtStatement, CtExpression<T>, CtRHSReceiver<A> {
public interface CtAssignment<T, A extends T> extends CtStatement, CtExpression<T>, CtRHSReceiver<A> {
/**
* Returns the assigned expression on the left-hand side (where the value is stored,
* e.g. in a variable, in an array, in a field ...).
Expand All @@ -36,4 +35,7 @@ public interface CtAssignment<T, A extends T>
* Sets the assigned expression (left hand side - LHS).
*/
<C extends CtAssignment<T, A>> C setAssigned(CtExpression<T> assigned);

@Override
CtAssignment<T, A> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtBinaryOperator.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,7 @@ public interface CtBinaryOperator<T> extends CtExpression<T> {
* Gets the kind of this binary operator.
*/
BinaryOperatorKind getKind();

@Override
CtBinaryOperator<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtBlock.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,7 @@ public interface CtBlock<R> extends CtStatement, CtStatementList, TemplateParame
* Replaces this element by another one.
*/
<T extends R> void replace(CtBlock<T> element);

@Override
CtBlock<R> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtBreak.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,7 @@ public interface CtBreak extends CtCFlowBreak {
* defined).
*/
<T extends CtBreak> T setTargetLabel(String targetLabel);

@Override
CtBreak clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtCase.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@ public interface CtCase<S> extends CtStatement, CtStatementList {
* Sets the case expression.
*/
<T extends CtCase<S>> T setCaseExpression(CtExpression<S> caseExpression);

@Override
CtCase<S> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtCatch.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,7 @@ public interface CtCatch extends CtCodeElement {
* Sets the catch's body.
*/
<T extends CtCatch> T setBody(CtBlock<?> body);

@Override
CtCatch clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtCatchVariable.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,7 @@ public interface CtCatchVariable<T> extends CtVariable<T>, CtMultiTypedElement,
* @see spoon.reflect.declaration.CtNamedElement#getReference()
*/
CtCatchVariableReference<T> getReference();

@Override
CtCatchVariable<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtCodeElement.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@ public interface CtCodeElement extends CtElement {
*/
<R extends CtCodeElement> R partiallyEvaluate();

@Override
CtCodeElement clone();
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
* be inserted in the program's model as is. Code snippets should be avoided
* since no controls can be performed on them.
*/
public interface CtCodeSnippetExpression<T> extends CtCodeSnippet, CtExpression<T> {
public interface CtCodeSnippetExpression<T> extends CtExpression<T>, CtCodeSnippet {

/**
* Compiles this expression snippet to produce the corresponding AST expression.
Expand All @@ -34,4 +34,6 @@ public interface CtCodeSnippetExpression<T> extends CtCodeSnippet, CtExpression<
*/
<E extends CtExpression<T>> E compile() throws SnippetCompilationError;

@Override
CtCodeSnippetExpression<T> clone();
}
4 changes: 3 additions & 1 deletion src/main/java/spoon/reflect/code/CtCodeSnippetStatement.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
* since no controls can be performed on them.
*/

public interface CtCodeSnippetStatement extends CtCodeSnippet, CtStatement {
public interface CtCodeSnippetStatement extends CtStatement, CtCodeSnippet {

/**
* Compiles this statement code snippet to produce the corresponding AST
Expand All @@ -37,4 +37,6 @@ public interface CtCodeSnippetStatement extends CtCodeSnippet, CtStatement {
*/
<S extends CtStatement> S compile() throws SnippetCompilationError;

@Override
CtCodeSnippetStatement clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtComment.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,7 @@ enum CommentType {
CommentType getCommentType();

<E extends CtComment> E setCommentType(CommentType commentType);

@Override
CtComment clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtConditional.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,7 @@ public interface CtConditional<T> extends CtExpression<T> {
* Sets the condition expression.
*/
<C extends CtConditional<T>> C setCondition(CtExpression<Boolean> condition);

@Override
CtConditional<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtConstructorCall.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@
* created type
*/
public interface CtConstructorCall<T> extends CtTargetedExpression<T, CtExpression<?>>, CtAbstractInvocation<T>, CtStatement, CtGenericElementReference {
@Override
CtConstructorCall<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtContinue.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,7 @@ public interface CtContinue extends CtCFlowBreak {
* defined).
*/
<T extends CtContinue> T setTargetLabel(String targetLabel);

@Override
CtContinue clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtDo.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,7 @@ public interface CtDo extends CtLoop {
* Sets the looping test as a boolean expression.
*/
<T extends CtDo> T setLoopingExpression(CtExpression<Boolean> expression);

@Override
CtDo clone();
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,7 @@ public interface CtExecutableReferenceExpression<T, E extends CtExpression<?>> e
* Sets the executable will be referenced by the expression.
*/
<C extends CtExecutableReferenceExpression<T, E>> C setExecutable(CtExecutableReference<T> executable);

@Override
CtExecutableReferenceExpression<T, E> clone();
}
6 changes: 4 additions & 2 deletions src/main/java/spoon/reflect/code/CtExpression.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
*/
package spoon.reflect.code;

import java.util.List;

import spoon.reflect.declaration.CtTypedElement;
import spoon.reflect.reference.CtTypeReference;
import spoon.template.TemplateParameter;

import java.util.List;

/**
* This abstract code element defines a typed expression.
*
Expand Down Expand Up @@ -50,4 +50,6 @@ public interface CtExpression<T> extends CtCodeElement, CtTypedElement<T>, Templ
*/
<E extends T> void replace(CtExpression<E> element);

@Override
CtExpression<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtFieldAccess.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,7 @@
*/
public interface CtFieldAccess<T> extends CtVariableRead<T>, CtTargetedExpression<T, CtExpression<?>> {
CtFieldReference<T> getVariable();

@Override
CtFieldAccess<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtFieldRead.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,6 @@
* type of the field
*/
public interface CtFieldRead<T> extends CtFieldAccess<T> {
@Override
CtFieldRead<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtFieldWrite.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@
* type of the field
*/
public interface CtFieldWrite<T> extends CtFieldAccess<T> {
@Override
CtFieldWrite<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtFor.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,6 @@ public interface CtFor extends CtLoop {
*/
boolean removeForUpdate(CtStatement statement);

@Override
CtFor clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtForEach.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,7 @@ public interface CtForEach extends CtLoop {
* Sets the variable that references the currently iterated element.
*/
<T extends CtForEach> T setVariable(CtLocalVariable<?> variable);

@Override
CtForEach clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtIf.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,7 @@ public interface CtIf extends CtStatement, TemplateParameter<Void> {
* Sets the statement executed when the condition is true.
*/
<T extends CtIf> T setThenStatement(CtStatement thenStatement);

@Override
CtIf clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtInvocation.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@ public interface CtInvocation<T> extends CtAbstractInvocation<T>, CtStatement, C
*/
@Override
CtTypeReference<T> getType();

@Override
CtInvocation<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtLambda.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,7 @@ public interface CtLambda<T> extends CtExpression<T>, CtExecutable<T> {
* if the lambda already has a value in the body attribute.
*/
<C extends CtLambda<T>> C setExpression(CtExpression<T> expression);

@Override
CtLambda<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtLiteral.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,6 @@ public interface CtLiteral<T> extends CtExpression<T> {
*/
<C extends CtLiteral<T>> C setValue(T value);

@Override
CtLiteral<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtLocalVariable.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,7 @@ public interface CtLocalVariable<T> extends CtStatement, CtVariable<T>, CtRHSRec
* @see spoon.reflect.declaration.CtNamedElement#getReference()
*/
CtLocalVariableReference<T> getReference();

@Override
CtLocalVariable<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtLoop.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,7 @@ public interface CtLoop extends CtStatement, TemplateParameter<Void> {
* Sets the body of this loop.
*/
<T extends CtLoop> T setBody(CtStatement body);

@Override
CtLoop clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtNewArray.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,6 @@ public interface CtNewArray<T> extends CtExpression<T> {
*/
boolean removeElement(CtExpression<?> expression);

@Override
CtNewArray<T> clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtNewClass.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,6 @@ public interface CtNewClass<T> extends CtConstructorCall<T> {
*/
<N extends CtNewClass> N setAnonymousClass(CtClass<?> anonymousClass);

@Override
CtNewClass<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtOperatorAssignment.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,7 @@ public interface CtOperatorAssignment<T, A extends T> extends CtAssignment<T, A>
* Gets the operator kind.
*/
BinaryOperatorKind getKind();

@Override
CtOperatorAssignment<T, A> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtReturn.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,7 @@ public interface CtReturn<R> extends CtCFlowBreak, TemplateParameter<Void> {
* Sets the returned expression.
*/
<T extends CtReturn<R>> T setReturnedExpression(CtExpression<R> returnedExpression);

@Override
CtReturn<R> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtStatement.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,7 @@ public interface CtStatement extends CtCodeElement {
* Replaces this element by another one.
*/
void replace(CtStatement element);

@Override
CtStatement clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtStatementList.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,7 @@ public interface CtStatementList extends CtCodeElement, Iterable<CtStatement> {
* Removes a statement.
*/
void removeStatement(CtStatement statement);

@Override
CtStatementList clone();
}
2 changes: 2 additions & 0 deletions src/main/java/spoon/reflect/code/CtSuperAccess.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,6 @@
* Type of super
*/
public interface CtSuperAccess<T> extends CtVariableRead<T>, CtTargetedExpression<T, CtExpression<?>> {
@Override
CtSuperAccess<T> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtSwitch.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,7 @@ public interface CtSwitch<S> extends CtStatement {
* Removes a case;
*/
boolean removeCase(CtCase<? super S> c);

@Override
CtSwitch<S> clone();
}
3 changes: 3 additions & 0 deletions src/main/java/spoon/reflect/code/CtSynchronized.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,7 @@ public interface CtSynchronized extends CtStatement {
* Sets the synchronized block.
*/
<T extends CtSynchronized> T setBlock(CtBlock<?> block);

@Override
CtSynchronized clone();
}
Loading

0 comments on commit bc798c1

Please sign in to comment.