package org.yinwang.pysonar.ast;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.yinwang.pysonar.Indexer;
import org.yinwang.pysonar.Scope;
import org.yinwang.pysonar.types.Type;
/**
* A name alias. Used for the components of import and import-from statements.
*/
public class Withitem extends Node {
@Nullable
public Node optional_vars;
@NotNull
public Node context_expr;
public Withitem(@NotNull Node context_expr, @Nullable Node optional_vars, int start, int end) {
super(start, end);
this.context_expr = context_expr;
this.optional_vars = optional_vars;
addChildren(context_expr, optional_vars);
}
@NotNull
@Override
public String toString() {
return "<withitem:" + context_expr + " as " + optional_vars + ">";
}
// dummy, will never be called
@NotNull
@Override
public Type resolve(Scope s, int tag) {
return Indexer.idx.builtins.unknown;
}
@Override
public void visit(@NotNull NodeVisitor v) {
if (v.visit(this)) {
visitNode(context_expr, v);
visitNode(optional_vars, v);
}
}
}