Search in sources :

Example 1 with Name

use of com.google.devtools.j2objc.ast.Name in project j2objc by google.

the class OuterReferenceResolver method getPathForLocalVar.

private Expression getPathForLocalVar(VariableElement var) {
    Name path = null;
    Scope scope = peekScope();
    if (scope.declaredVars.contains(var)) {
        // Var is declared in current scope, return empty path.
        return path;
    }
    if (var.getConstantValue() != null) {
        // Var has constant value, return a literal.
        return TreeUtil.newLiteral(var.getConstantValue(), typeUtil);
    }
    Scope lastScope = scope;
    while (!(scope = scope.outer).declaredVars.contains(var)) {
        // Except for the top scope, only include CLASS scopes when generating the path.
        if (scope == lastScope.outerClass) {
            path = Name.newName(path, getOrCreateOuterVar(lastScope));
            lastScope = scope;
        }
    }
    return Name.newName(path, getOrCreateCaptureVar(var, lastScope));
}
Also used : SimpleName(com.google.devtools.j2objc.ast.SimpleName) QualifiedName(com.google.devtools.j2objc.ast.QualifiedName) Name(com.google.devtools.j2objc.ast.Name)

Example 2 with Name

use of com.google.devtools.j2objc.ast.Name in project j2objc by google.

the class OuterReferenceResolver method visit.

@Override
public boolean visit(SuperFieldAccess node) {
    VariableElement var = node.getVariableElement();
    Name path = getPathForField(var, node.getTypeMirror());
    if (path != null) {
        node.replaceWith(path);
    }
    return false;
}
Also used : VariableElement(javax.lang.model.element.VariableElement) SimpleName(com.google.devtools.j2objc.ast.SimpleName) QualifiedName(com.google.devtools.j2objc.ast.QualifiedName) Name(com.google.devtools.j2objc.ast.Name)

Example 3 with Name

use of com.google.devtools.j2objc.ast.Name in project j2objc by google.

the class TreeConverter method convertExpressionMethodReference.

private static TreeNode convertExpressionMethodReference(org.eclipse.jdt.core.dom.ExpressionMethodReference node) {
    IMethodBinding methodBinding = node.resolveMethodBinding();
    ExpressionMethodReference newNode = new ExpressionMethodReference();
    Expression expression = (Expression) convert(node.getExpression());
    boolean consumesFirstParam = !BindingUtil.isStatic(methodBinding) && expression instanceof Name && !ElementUtil.isVariable(((Name) expression).getElement());
    convertMethodReference(node, newNode, methodBinding, consumesFirstParam);
    return newNode.setName((SimpleName) TreeConverter.convert(node.getName())).setExpression(expression);
}
Also used : IMethodBinding(org.eclipse.jdt.core.dom.IMethodBinding) ExpressionMethodReference(com.google.devtools.j2objc.ast.ExpressionMethodReference) PostfixExpression(com.google.devtools.j2objc.ast.PostfixExpression) InstanceofExpression(com.google.devtools.j2objc.ast.InstanceofExpression) Expression(com.google.devtools.j2objc.ast.Expression) ConditionalExpression(com.google.devtools.j2objc.ast.ConditionalExpression) InfixExpression(com.google.devtools.j2objc.ast.InfixExpression) ParenthesizedExpression(com.google.devtools.j2objc.ast.ParenthesizedExpression) LambdaExpression(com.google.devtools.j2objc.ast.LambdaExpression) PrefixExpression(com.google.devtools.j2objc.ast.PrefixExpression) ThisExpression(com.google.devtools.j2objc.ast.ThisExpression) FunctionalExpression(com.google.devtools.j2objc.ast.FunctionalExpression) CastExpression(com.google.devtools.j2objc.ast.CastExpression) VariableDeclarationExpression(com.google.devtools.j2objc.ast.VariableDeclarationExpression) SimpleName(com.google.devtools.j2objc.ast.SimpleName) SimpleName(com.google.devtools.j2objc.ast.SimpleName) Name(com.google.devtools.j2objc.ast.Name) QualifiedName(com.google.devtools.j2objc.ast.QualifiedName)

Example 4 with Name

use of com.google.devtools.j2objc.ast.Name in project j2objc by google.

the class StatementGenerator method visit.

@Override
public boolean visit(QualifiedName node) {
    Element element = node.getElement();
    if (ElementUtil.isVariable(element)) {
        VariableElement var = (VariableElement) element;
        if (ElementUtil.isGlobalVar(var)) {
            buffer.append(nameTable.getVariableQualifiedName(var));
            return false;
        }
    }
    if (ElementUtil.isTypeElement(element)) {
        buffer.append(nameTable.getFullName((TypeElement) element));
        return false;
    }
    Name qualifier = node.getQualifier();
    qualifier.accept(this);
    buffer.append("->");
    node.getName().accept(this);
    return false;
}
Also used : TypeElement(javax.lang.model.element.TypeElement) TypeElement(javax.lang.model.element.TypeElement) Element(javax.lang.model.element.Element) VariableElement(javax.lang.model.element.VariableElement) ExecutableElement(javax.lang.model.element.ExecutableElement) VariableElement(javax.lang.model.element.VariableElement) QualifiedName(com.google.devtools.j2objc.ast.QualifiedName) SimpleName(com.google.devtools.j2objc.ast.SimpleName) Name(com.google.devtools.j2objc.ast.Name)

Example 5 with Name

use of com.google.devtools.j2objc.ast.Name in project j2objc by google.

the class TreeConverter method convertSuperMethodInvocation.

private static TreeNode convertSuperMethodInvocation(org.eclipse.jdt.core.dom.SuperMethodInvocation node) {
    SuperMethodInvocation newNode = new SuperMethodInvocation();
    convertExpression(node, newNode);
    for (Object argument : node.arguments()) {
        newNode.addArgument((Expression) TreeConverter.convert(argument));
    }
    IMethodBinding methodBinding = node.resolveMethodBinding();
    return newNode.setExecutablePair(new ExecutablePair(BindingConverter.getExecutableElement(methodBinding), BindingConverter.getType(methodBinding))).setVarargsType(getVarargsType(methodBinding, node.arguments())).setQualifier((Name) TreeConverter.convert(node.getQualifier())).setName((SimpleName) TreeConverter.convert(node.getName()));
}
Also used : IMethodBinding(org.eclipse.jdt.core.dom.IMethodBinding) ExecutablePair(com.google.devtools.j2objc.types.ExecutablePair) SuperMethodInvocation(com.google.devtools.j2objc.ast.SuperMethodInvocation) SimpleName(com.google.devtools.j2objc.ast.SimpleName) Name(com.google.devtools.j2objc.ast.Name) QualifiedName(com.google.devtools.j2objc.ast.QualifiedName)

Aggregations

Name (com.google.devtools.j2objc.ast.Name)10 SimpleName (com.google.devtools.j2objc.ast.SimpleName)9 QualifiedName (com.google.devtools.j2objc.ast.QualifiedName)8 VariableElement (javax.lang.model.element.VariableElement)4 CastExpression (com.google.devtools.j2objc.ast.CastExpression)2 ConditionalExpression (com.google.devtools.j2objc.ast.ConditionalExpression)2 Expression (com.google.devtools.j2objc.ast.Expression)2 FunctionalExpression (com.google.devtools.j2objc.ast.FunctionalExpression)2 InfixExpression (com.google.devtools.j2objc.ast.InfixExpression)2 InstanceofExpression (com.google.devtools.j2objc.ast.InstanceofExpression)2 LambdaExpression (com.google.devtools.j2objc.ast.LambdaExpression)2 ParenthesizedExpression (com.google.devtools.j2objc.ast.ParenthesizedExpression)2 PostfixExpression (com.google.devtools.j2objc.ast.PostfixExpression)2 PrefixExpression (com.google.devtools.j2objc.ast.PrefixExpression)2 ThisExpression (com.google.devtools.j2objc.ast.ThisExpression)2 TreeNode (com.google.devtools.j2objc.ast.TreeNode)2 VariableDeclarationExpression (com.google.devtools.j2objc.ast.VariableDeclarationExpression)2 Element (javax.lang.model.element.Element)2 IMethodBinding (org.eclipse.jdt.core.dom.IMethodBinding)2 Annotation (com.google.devtools.j2objc.ast.Annotation)1