Skip to content

Commit

Permalink
Remove getBinding from Name and convert references to use getElement
Browse files Browse the repository at this point in the history
	Change on 2016/07/12 by nbraswell <nbraswell@google.com>

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=127221446
  • Loading branch information
Limvot authored and Keith Stanger committed Jul 18, 2016
1 parent 751102f commit 5e6dd7d
Show file tree
Hide file tree
Showing 16 changed files with 134 additions and 50 deletions.
26 changes: 14 additions & 12 deletions translator/src/main/java/com/google/devtools/j2objc/ast/Name.java
Expand Up @@ -22,27 +22,33 @@

import java.util.List;

import javax.lang.model.element.Element;
import javax.lang.model.type.TypeMirror;

/**
* Base node class for a name.
*/
public abstract class Name extends Expression {

private IBinding binding;
private Element element;

public Name(org.eclipse.jdt.core.dom.Name jdtNode) {
super(jdtNode);
binding = BindingConverter.wrapBinding(jdtNode.resolveBinding());
IBinding binding = BindingConverter.wrapBinding(jdtNode.resolveBinding());
element = BindingConverter.getElement(binding);
}

public Name(Name other) {
super(other);
binding = other.getBinding();
element = other.getElement();
}

public Name(IBinding binding) {
this.binding = binding;
this.element = BindingConverter.getElement(binding);
}

public Name(Element element) {
this.element = element;
}

public static Name newName(Name qualifier, IBinding binding) {
Expand All @@ -59,22 +65,18 @@ public static Name newName(List<? extends IBinding> path) {

public abstract String getFullyQualifiedName();

public IBinding getBinding() {
return binding;
public Element getElement() {
return element;
}

@Override
public ITypeBinding getTypeBinding() {
return BindingUtil.toTypeBinding(binding);
return BindingUtil.toTypeBinding(BindingConverter.unwrapElement(element));
}

@Override
public TypeMirror getTypeMirror() {
return BindingConverter.getType(getTypeBinding());
}

public void setBinding(IBinding newBinding) {
binding = newBinding;
return element.asType();
}

public boolean isQualifiedName() {
Expand Down
Expand Up @@ -18,6 +18,8 @@

import org.eclipse.jdt.core.dom.IBinding;

import javax.lang.model.element.Element;

/**
* Node for a simple (unqualified) name.
*/
Expand All @@ -40,6 +42,11 @@ public SimpleName(IBinding binding) {
identifier = binding.getName();
}

public SimpleName(Element element) {
super(element);
identifier = element.getSimpleName().toString();
}

public SimpleName(String identifier) {
super((IBinding) null);
this.identifier = identifier;
Expand All @@ -58,6 +65,7 @@ public void setIdentifier(String identifier) {
this.identifier = identifier;
}

@Override
public String getFullyQualifiedName() {
return identifier;
}
Expand Down
Expand Up @@ -18,10 +18,11 @@
import com.google.common.collect.AbstractIterator;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.devtools.j2objc.javac.BindingConverter;
import com.google.devtools.j2objc.types.Types;
import com.google.devtools.j2objc.util.BindingUtil;
import com.google.devtools.j2objc.util.ElementUtil;

import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.IVariableBinding;
Expand All @@ -33,6 +34,9 @@
import java.util.Iterator;
import java.util.List;

import javax.lang.model.element.Element;
import javax.lang.model.element.VariableElement;

/**
* Collection of utility methods for examining tree nodes.
*/
Expand Down Expand Up @@ -72,6 +76,7 @@ public static <T> void moveList(List<T> fromList, List<T> toList) {
}

private static final Predicate<Annotation> IS_RUNTIME_PREDICATE = new Predicate<Annotation>() {
@Override
public boolean apply(Annotation annotation) {
return BindingUtil.isRuntimeAnnotation(annotation.getAnnotationBinding());
}
Expand Down Expand Up @@ -190,6 +195,7 @@ public static Iterable<VariableDeclarationFragment> getAllFields(AbstractTypeDec
public static Iterable<VariableDeclarationFragment> asFragments(
final Iterable<FieldDeclaration> fieldDecls) {
return new Iterable<VariableDeclarationFragment>() {
@Override
public Iterator<VariableDeclarationFragment> iterator() {
final Iterator<FieldDeclaration> fieldIter = fieldDecls.iterator();
return new AbstractIterator<VariableDeclarationFragment>() {
Expand Down Expand Up @@ -268,9 +274,14 @@ public static IVariableBinding getVariableBinding(Expression node) {
}
}

public static VariableElement getVariableElement(Expression node) {
return (VariableElement) BindingConverter.getElement(getVariableBinding(node));
}

public static IVariableBinding getVariableBinding(Name node) {
IBinding binding = node.getBinding();
return (binding instanceof IVariableBinding) ? (IVariableBinding) binding : null;
Element element = node.getElement();
return element != null && ElementUtil.isVariable(element)
? (IVariableBinding) BindingConverter.unwrapElement(element) : null;
}

public static IMethodBinding getMethodBinding(Expression node) {
Expand Down Expand Up @@ -364,6 +375,7 @@ private List<Statement> getDelegate() {
return delegate;
}

@Override
public Statement get(int idx) {
if (delegate != null) {
return delegate.get(idx);
Expand All @@ -374,13 +386,15 @@ public Statement get(int idx) {
return lonelyStatement;
}

@Override
public int size() {
if (delegate != null) {
return delegate.size();
}
return 1;
}

@Override
public void add(int idx, Statement stmt) {
getDelegate().add(idx, stmt);
}
Expand Down
Expand Up @@ -21,17 +21,18 @@
import com.google.devtools.j2objc.ast.TagElement;
import com.google.devtools.j2objc.ast.TextElement;
import com.google.devtools.j2objc.ast.TreeNode;
import com.google.devtools.j2objc.util.ElementUtil;
import com.google.devtools.j2objc.util.NameTable;

import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.IVariableBinding;

import java.text.BreakIterator;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.lang.model.element.Element;
import javax.lang.model.element.VariableElement;

/**
* Generates Javadoc comments.
*
Expand Down Expand Up @@ -228,9 +229,9 @@ private String printTagFragments(List<TreeNode> fragments) {
} else if (fragment instanceof TagElement) {
sb.append(printTag((TagElement) fragment));
} else if (fragment instanceof SimpleName) {
IBinding binding = ((Name) fragment).getBinding();
if (binding instanceof IVariableBinding) {
sb.append(NameTable.getDocCommentVariableName(((IVariableBinding) binding)));
Element element = ((Name) fragment).getElement();
if (element != null && ElementUtil.isVariable(element)) {
sb.append(NameTable.getDocCommentVariableName(((VariableElement) element)));
} else {
sb.append(fragment.toString());
}
Expand Down
Expand Up @@ -106,11 +106,11 @@
import com.google.devtools.j2objc.javac.TypeUtil;
import com.google.devtools.j2objc.types.IOSTypeBinding;
import com.google.devtools.j2objc.util.BindingUtil;
import com.google.devtools.j2objc.util.ElementUtil;
import com.google.devtools.j2objc.util.NameTable;
import com.google.devtools.j2objc.util.UnicodeUtils;

import org.eclipse.jdt.core.dom.IAnnotationBinding;
import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.IMemberValuePairBinding;
import org.eclipse.jdt.core.dom.IMethodBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
Expand All @@ -120,6 +120,8 @@
import java.util.List;
import java.util.Map;

import javax.lang.model.element.Element;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;

Expand Down Expand Up @@ -821,16 +823,16 @@ public boolean visit(PrimitiveType node) {

@Override
public boolean visit(QualifiedName node) {
IBinding binding = node.getBinding();
if (binding instanceof IVariableBinding) {
IVariableBinding var = (IVariableBinding) binding;
if (BindingUtil.isGlobalVar(var)) {
Element element = node.getElement();
if (ElementUtil.isVariable(element)) {
VariableElement var = (VariableElement) element;
if (ElementUtil.isGlobalVar(var)) {
buffer.append(nameTable.getVariableQualifiedName(var));
return false;
}
}
if (binding instanceof ITypeBinding) {
buffer.append(nameTable.getFullName((ITypeBinding) binding));
if (ElementUtil.isType(element)) {
buffer.append(nameTable.getFullName(element.asType()));
return false;
}
Name qualifier = node.getQualifier();
Expand Down Expand Up @@ -864,13 +866,13 @@ public boolean visit(ReturnStatement node) {

@Override
public boolean visit(SimpleName node) {
IBinding binding = node.getBinding();
if (binding instanceof IVariableBinding) {
buffer.append(nameTable.getVariableQualifiedName((IVariableBinding) binding));
Element element = node.getElement();
if (element != null && ElementUtil.isVariable(element)) {
buffer.append(nameTable.getVariableQualifiedName((VariableElement) element));
return false;
}
if (binding instanceof ITypeBinding) {
buffer.append(nameTable.getFullName((ITypeBinding) binding));
if (element != null && ElementUtil.isType(element)) {
buffer.append(nameTable.getFullName(element.asType()));
} else {
buffer.append(node.getIdentifier());
}
Expand Down
Expand Up @@ -34,6 +34,7 @@

import javax.lang.model.element.Element;
import javax.lang.model.element.Name;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeMirror;

/**
Expand Down Expand Up @@ -272,9 +273,12 @@ public static JdtTypeMirror getTypeMirror(IBinding binding) {
return typeCache.get(wrappedBinding);
}


public static Element getElement(IBinding binding) {
return getElement(wrapBinding(binding));
return getElement(wrapBinding(binding));
}

public static VariableElement getVariableElement(IVariableBinding binding) {
return (VariableElement) getElement(binding);
}

public static JdtElement getElement(JdtBinding binding) {
Expand Down
Expand Up @@ -40,7 +40,11 @@ abstract class JdtElement implements Element {
private static final Map<Integer, Set<Modifier>> modifierSets = new HashMap<>();

protected JdtElement(IBinding binding, String name, int flags) {
this.binding = BindingConverter.wrapBinding(binding);
if (binding instanceof JdtBinding) {
this.binding = (JdtBinding) binding;
} else {
this.binding = BindingConverter.wrapBinding(binding);
}
this.name = BindingConverter.getName(name);
this.flags = flags;
}
Expand All @@ -50,9 +54,7 @@ public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType)
}

@Override
public TypeMirror asType() {
return BindingConverter.getTypeMirror(binding);
}
public abstract TypeMirror asType();

@Override
public Set<Modifier> getModifiers() {
Expand Down
Expand Up @@ -34,7 +34,7 @@
class JdtExecutableElement extends JdtElement implements ExecutableElement {

public JdtExecutableElement(IMethodBinding binding) {
super(binding.getMethodDeclaration(), binding.getName(), binding.getModifiers());
super(binding, binding.getName(), binding.getModifiers());
}

@Override
Expand All @@ -59,6 +59,11 @@ public TypeMirror getReturnType() {
return BindingConverter.getType(((JdtMethodBinding) binding).getDeclaringClass());
}

@Override
public TypeMirror asType() {
return BindingConverter.getType((JdtMethodBinding) binding);
}

@Override
public List<? extends VariableElement> getParameters() {
IMethodBinding methodBinding = (IMethodBinding) binding;
Expand Down
Expand Up @@ -28,6 +28,7 @@
import javax.lang.model.element.Modifier;
import javax.lang.model.element.Name;
import javax.lang.model.element.PackageElement;
import javax.lang.model.type.TypeMirror;

class JdtPackageElement extends JdtElement implements PackageElement {
private List<AnnotationMirror> annotations = new ArrayList<>();
Expand Down Expand Up @@ -56,6 +57,11 @@ public Set<Modifier> getModifiers() {
return Collections.emptySet();
}

@Override
public TypeMirror asType() {
throw new AssertionError("not implemented");
}

@Override
public Name getQualifiedName() {
return name;
Expand Down
Expand Up @@ -74,6 +74,10 @@ public TypeMirror getSuperclass() {
return null;
}

@Override public TypeMirror asType() {
return BindingConverter.getType((ITypeBinding) binding);
}

@Override
public Element getEnclosingElement() {
ITypeBinding decl = (ITypeBinding) binding;
Expand Down
Expand Up @@ -46,6 +46,11 @@ public Element getEnclosingElement() {
return getGenericElement();
}

@Override
public TypeMirror asType() {
throw new AssertionError("not implemented");
}

@Override
public List<? extends TypeMirror> getBounds() {
List<TypeMirror> bounds = new ArrayList<>();
Expand Down

0 comments on commit 5e6dd7d

Please sign in to comment.