Class<?> actualClass = fieldAccess.getVariable().getDeclaringType().getActualClass(); if (actualClass != null) { CtLiteral<Class<?>> literal = fieldAccess.getFactory().Core().createLiteral(); literal.setValue(actualClass); setResult(literal); if (target instanceof CtNewArray<?>) { CtNewArray<?> newArr = (CtNewArray<?>) target; CtLiteral<Number> literal = fieldAccess.getFactory().createLiteral(newArr.getElements().size()); setResult(literal); return; if (fieldAccess.getFactory().Type().ENUM .isSubtypeOf(fieldAccess.getVariable().getDeclaringType())) { CtLiteral<CtFieldReference<?>> l = fieldAccess.getFactory().Core().createLiteral(); l.setValue(fieldAccess.getVariable()); setResult(l);
printer.writeComment(f.getFactory().createComment("ERROR: Missing field \"" + f.getVariable().getSimpleName() + "\", please check your model. The code may not compile.", CommentType.BLOCK)).writeSpace();
@Override public <T> void visitCtFieldAccess(CtFieldAccess<T> fieldAccess) { if (fieldAccess.getVariable().getSimpleName().equals("class")) { Class<?> c = fieldAccess.getVariable().getDeclaringType().getActualClass(); if (c != null) { CtLiteral<Class<?>> l = fieldAccess.getFactory().Core().createLiteral(); l.setValue(c); setResult(l); return; } } if (fieldAccess.getFactory().Type().createReference(Enum.class) .isAssignableFrom(fieldAccess.getVariable().getDeclaringType())) { CtLiteral<CtFieldReference<?>> l = fieldAccess.getFactory().Core().createLiteral(); l.setValue(fieldAccess.getVariable()); setResult(l); return; } CtField<?> f = fieldAccess.getVariable().getDeclaration(); if ((f != null) && f.getModifiers().contains(ModifierKind.FINAL)) { setResult(evaluate(f, f.getDefaultExpression())); return; } setResult(fieldAccess.getFactory().Core().clone(fieldAccess)); }
if (Parameters.isParameterSource(ref)) { Object[] value = (Object[]) Parameters.getValue(template, ref.getSimpleName(), null); fieldAccess.replace((CtExpression) fieldAccess.getFactory().Code().createLiteral(value .length)); throw new SkipException(fieldAccess);