List of usage examples for org.eclipse.jdt.internal.compiler.ast SingleNameReference fieldBinding
@Override
public FieldBinding fieldBinding()
From source file:spoon.support.builder.JDTTreeBuilder.java
License:Open Source License
@SuppressWarnings("unchecked") @Override//from w w w. ja va 2 s .c o m public boolean visit(SingleNameReference singleNameReference, BlockScope scope) { CtVariableAccess<?> va = null; if (singleNameReference.binding instanceof FieldBinding) { va = factory.Core().createFieldAccess(); va.setVariable(references.getVariableReference(singleNameReference.fieldBinding())); } else if (singleNameReference.binding instanceof VariableBinding) { va = factory.Core().createVariableAccess(); va.setVariable(references.getVariableReference((VariableBinding) singleNameReference.binding)); } if (va != null) context.enter(va, singleNameReference); return true; }
From source file:spoon.support.compiler.jdt.JDTTreeBuilder.java
License:Open Source License
@Override public boolean visit(SingleNameReference singleNameReference, BlockScope scope) { CtVariableAccess<Object> va = null; if (singleNameReference.binding instanceof FieldBinding) { if (context.stack.peek().element instanceof CtAssignment && context.assigned) { va = factory.Core().createFieldWrite(); } else {/* w ww .j av a2s.c om*/ va = factory.Core().createFieldRead(); } va.setVariable(references.getVariableReference(singleNameReference.fieldBinding())); } else if (singleNameReference.binding instanceof VariableBinding) { if (context.stack.peek().element instanceof CtAssignment && context.assigned) { va = factory.Core().createVariableWrite(); } else { va = factory.Core().createVariableRead(); } va.setVariable(references.getVariableReference((VariableBinding) singleNameReference.binding)); } else if (singleNameReference.binding instanceof TypeBinding) { CtTypeAccess<Object> ta = factory.Core().createTypeAccess(); ta.setType(references.getTypeReference((TypeBinding) singleNameReference.binding)); context.enter(ta, singleNameReference); } else if (singleNameReference.binding instanceof ProblemBinding) { if (context.stack.peek().element instanceof CtInvocation) { final CtTypeAccess<Object> ta = factory.Core().createTypeAccess(); final CtTypeReference<Object> typeReference = factory.Core().createTypeReference(); typeReference.setSimpleName(new String(singleNameReference.binding.readableName())); ta.setType(typeReference); context.enter(ta, singleNameReference); return true; } else if (context.stack.peek().element instanceof CtAssignment && context.assigned) { va = factory.Core().createFieldWrite(); } else { va = factory.Core().createFieldRead(); } } if (va != null) { context.enter(va, singleNameReference); } return true; }
From source file:spoon.support.compiler.jdt.JDTTreeBuilderHelper.java
License:Open Source License
/** * Creates a field access from its single name. * * @param singleNameReference/*ww w . ja v a 2 s . c om*/ * Used to build a variable reference and a target which will be contained in the field access. * @return a field access. */ <T> CtFieldAccess<T> createFieldAccess(SingleNameReference singleNameReference) { CtFieldAccess<T> va; if (isLhsAssignment(jdtTreeBuilder.getContextBuilder(), singleNameReference)) { va = jdtTreeBuilder.getFactory().Core().createFieldWrite(); } else { va = jdtTreeBuilder.getFactory().Core().createFieldRead(); } va.setVariable(jdtTreeBuilder.getReferencesBuilder() .<T>getVariableReference(singleNameReference.fieldBinding().original())); if (va.getVariable() != null) { final CtFieldReference<T> ref = va.getVariable(); if (ref.isStatic() && !ref.getDeclaringType().isAnonymous()) { va.setTarget(jdtTreeBuilder.getFactory().Code().createTypeAccess(ref.getDeclaringType(), true)); } else if (!ref.isStatic()) { va.setTarget(jdtTreeBuilder.getFactory().Code().createThisAccess(jdtTreeBuilder .getReferencesBuilder().getTypeReference(singleNameReference.actualReceiverType), true)); } } return va; }