package org.yinwang.pysonar.ast;
import org.jetbrains.annotations.NotNull;
import org.yinwang.pysonar.types.ModuleType;
import org.yinwang.pysonar.types.Type;
import org.yinwang.pysonar.Binding;
import org.yinwang.pysonar.Indexer;
import org.yinwang.pysonar.Scope;
import java.util.List;
public class Import extends Node {
public List<Alias> names;
public Import(List<Alias> names, int start, int end) {
super(start, end);
this.names = names;
addChildren(names);
}
@NotNull
@Override
public Type resolve(@NotNull Scope s, int tag) {
for (Alias a : names) {
ModuleType mod = Indexer.idx.loadModule(a.name, s, tag);
if (mod == null) {
Indexer.idx.putProblem(this, "Cannot load module");
} else if (a.asname != null) {
s.put(a.asname.id, a.asname, mod, Binding.Kind.VARIABLE, tag);
}
}
return Indexer.idx.builtins.Cont;
}
@NotNull
@Override
public String toString() {
return "<Import:" + names + ">";
}
@Override
public void visit(@NotNull NodeVisitor v) {
if (v.visit(this)) {
visitNodeList(names, v);
}
}
}