@java.lang.Override public void set(spoon.reflect.reference.CtTypeReference replace) { this.element.setType(replace); } }
@Override public <T, U> void setValue(T element, U value) { castTarget(element).setType(castValue(value)); } }
@SuppressWarnings("unchecked") void enter(CtElement e, ASTNode node) { stack.push(new ASTPair(e, node)); if (!(e instanceof CtPackage) || (compilationUnitSpoon.getFile() != null && compilationUnitSpoon.getFile().getName().equals(DefaultJavaPrettyPrinter.JAVA_PACKAGE_DECLARATION))) { if (compilationunitdeclaration != null && !e.isImplicit()) { e.setPosition(this.jdtTreeBuilder.getPositionBuilder().buildPositionCtElement(e, node)); } } ASTPair pair = stack.peek(); CtElement current = pair.element; if (current instanceof CtExpression) { while (!casts.isEmpty()) { ((CtExpression<?>) current).addTypeCast(casts.remove(0).typeRef); } } try { if (e instanceof CtTypedElement && !(e instanceof CtConstructorCall) && !(e instanceof CtCatchVariable) && node instanceof Expression) { if (((CtTypedElement<?>) e).getType() == null) { ((CtTypedElement<Object>) e).setType(this.jdtTreeBuilder.getReferencesBuilder().getTypeReference(((Expression) node).resolvedType)); } } } catch (UnsupportedOperationException ignore) { // For some element, we throw an UnsupportedOperationException when we call setType(). } }
((CtTypedElement<Object>) e).setType(references.getTypeReference(((Expression) node).resolvedType));
@SuppressWarnings("unchecked") @Override public <T> void scanCtTypedElement(CtTypedElement<T> e) { if ((e.getType() != null) && parameterNames.contains(e.getType().getSimpleName())) { // replace type parameters // TODO: this would probably not work with inner classes!!! CtTypeReference<T> t; Object o = Parameters.getValue(template, e.getType().getSimpleName(), null); if (o instanceof Class) { // TODO: CHECK THAT THIS IS STILL WORKING o = factory.Type().createReference(((Class<T>) o)); } if (o instanceof CtTypeReference) { if ((e.getType() instanceof CtArrayTypeReference) && !(o instanceof CtArrayTypeReference)) { t = (CtArrayTypeReference<T>) e.getFactory().Type().createArrayReference( (CtTypeReference<?>) o, ((CtArrayTypeReference<?>) e.getType()).getDimensionCount()); } else { t = (CtTypeReference<T>) o; } e.setType(t); } else { throw new RuntimeException("unsupported reference substitution"); } } super.scanCtTypedElement(e); }