package org.yinwang.pysonar.ast;
import org.jetbrains.annotations.NotNull;
import org.yinwang.pysonar.Indexer;
import org.yinwang.pysonar.Scope;
import org.yinwang.pysonar.types.Type;
import java.util.List;
/**
* A name alias. Used for the components of import and import-from statements.
*/
public class Alias extends Node {
public List<Name> name;
public Name asname;
public Alias(List<Name> name, Name asname, int start, int end) {
super(start, end);
this.name = name;
this.asname = asname;
addChildren(name);
addChildren(asname);
}
/**
* Resolves and returns the referenced
* {@link org.yinwang.pysonar.types.ModuleType} in an import or
* or import-from statement. NImportFrom statements manually
* resolve their child NAliases.
*/
@NotNull
@Override
public Type resolve(Scope s, int tag) {
return Indexer.idx.builtins.unknown;
}
@NotNull
@Override
public String toString() {
return "<Alias:" + name + " as " + asname + ">";
}
@Override
public void visit(@NotNull NodeVisitor v) {
if (v.visit(this)) {
for (Name n : name) {
visitNode(n, v);
}
visitNode(asname, v);
}
}
}