docstr: Function calls are not handled for now.
  
  >>> import gast as ast
  >>> from pythran import passmanager, backend
  >>> node = ast.parse('''
  ... def foo():
  ...     a = builtins.range(10)''')
  >>> pm = passmanager.PassManager("test")
  >>> res = pm.gather(RangeValues, node)
  >>> res['a']
  Interval(low=-inf, high=inf)
docstr_tok: ["Function","calls","are","not","handled","for","now",".",">",">",">","import","gast","as","ast",">",">",">","from","pythran","import","passmanager",",","backend",">",">",">","node","=","ast.parse","(","``","'","...","def","foo","(",")",":","...","a","=","builtins.range","(","10",")","''","'",")",">",">",">","pm","=","passmanager.PassManager","(","``","test","''",")",">",">",">","res","=","pm.gather","(","RangeValues",",","node",")",">",">",">","res","[","'","a","'","]","Interval","(","low=-inf",",","high=inf",")"]
code: def visit_Call(self, node):
      """Function calls are not handled for now.
  
      >>> import gast as ast
      >>> from pythran import passmanager, backend
      >>> node = ast.parse('''
      ... def foo():
      ...     a = builtins.range(10)''')
      >>> pm = passmanager.PassManager("test")
      >>> res = pm.gather(RangeValues, node)
      >>> res['a']
      Interval(low=-inf, high=inf)
      """
      for alias in self.aliases[node.func]:
          if alias is MODULES["builtins"]["getattr"]:
              attr_name = node.args[-1].value
              attribute = attributes[attr_name][-1]
              self.add(node, attribute.return_range(None))
          elif isinstance(alias, Intrinsic):
              alias_range = alias.return_range(
                  [self.visit(n) for n in node.args]
              )
              self.add(node, alias_range)
          elif isinstance(alias, ast.FunctionDef):
              if alias not in self.result:
                  state = self.save_state()
                  self.parent.visit(alias)
                  return_range = self.result[alias]
                  self.restore_state(state)
              else:
                  return_range = self.result[alias]
              self.add(node, return_range)
          else:
              self.result.pop(node, None)
              return self.generic_visit(node)
      return self.result[node]
  
imports: import gast
  from collections import defaultdict
  from functools import reduce
  from pythran.analyses import Aliases, CFG
  from pythran.intrinsic import Intrinsic
  from pythran.passmanager import ModuleAnalysis
  from pythran.interval import Interval, IntervalTuple, UNKNOWN_RANGE
  from pythran.tables import MODULES, attributes
label_desc: Use image node_id 10 for calling the RangeValuesBase obj's underlying member method code with example usage: obj.visit_Call(node) and returns: self, self