package org.yinwang.pysonar.ast; import org.jetbrains.annotations.NotNull; import org.yinwang.pysonar.Scope; import org.yinwang.pysonar.types.ListType; import org.yinwang.pysonar.types.Type; public class Slice extends Node { public Node lower; public Node step; public Node upper; public Slice(Node lower, Node step, Node upper, int start, int end) { super(start, end); this.lower = lower; this.step = step; this.upper = upper; addChildren(lower, step, upper); } @NotNull @Override public Type resolve(Scope s, int tag) { if (lower != null) resolveExpr(lower, s, tag); if (step != null) resolveExpr(step, s, tag); if (upper != null) resolveExpr(upper, s, tag); return new ListType(); } @NotNull @Override public String toString() { return "<Slice:" + lower + ":" + step + ":" + upper + ">"; } @Override public void visit(@NotNull NodeVisitor v) { if (v.visit(this)) { visitNode(lower, v); visitNode(step, v); visitNode(upper, v); } } }