class_docstr: Infer symbolic type for all AST node. 
class_docstr_tok: ["Infer","symbolic","type","for","all","AST","node","."]
docstr: Set slicing type using continuous information if provided.
  
  Also visit subnodes as they may contains relevant typing information.
docstr_tok: ["Set","slicing","type","using","continuous","information","if","provided",".","Also","visit","subnodes","as","they","may","contains","relevant","typing","information","."]
code: def visit_Slice(self, node):
      """
      Set slicing type using continuous information if provided.
  
      Also visit subnodes as they may contains relevant typing information.
      """
      self.generic_visit(node)
      nstep = node.step
      if nstep is None or (isnum(nstep) and nstep.value > 0):
          if nstep is None or nstep.value == 1:
              if all(
                  self.range_values[p].low >= 0
                  for p in (node.lower, node.upper)
              ):
                  ntype = "pythonic::types::fast_contiguous_slice"
              else:
                  ntype = "pythonic::types::contiguous_slice"
          else:
              ntype = "pythonic::types::cstride_slice<{}>".format(
                  nstep.value
              )
          self.result[node] = self.builder.NamedType(ntype)
      else:
          self.result[node] = self.builder.NamedType(
              "pythonic::types::slice"
          )
  
imports: from pythran.analyses import LazynessAnalysis, StrictAliases, YieldPoints
  from pythran.analyses import LocalNodeDeclarations, Immediates, RangeValues
  from pythran.analyses import Ancestors
  from pythran.config import cfg
  from pythran.cxxtypes import TypeBuilder, ordered_set
  from pythran.intrinsic import UserFunction, Class
  from pythran.passmanager import ModuleAnalysis
  from pythran.tables import operator_to_lambda, MODULES
  from pythran.types.conversion import pytype_to_ctype
  from pythran.types.reorder import Reorder
  from pythran.utils import attr_to_path, cxxid, isnum, isextslice
  from collections import defaultdict
  from functools import reduce
  import gast
  from itertools import islice
  from copy import deepcopy
label_desc: Use image node_id 26 for calling the Types obj's underlying member method code with example usage: obj.visit_Slice(node) without return types