public override bool Walk(ReturnStatement node)
 {
     foreach (var type in _scope.GetTypesFromValue(_scope.GetValueFromExpression(node.Expression)))
     {
         _overload.ReturnTypes.Add(type);
     }
     return(true); // We want to evaluate all code so all private variables in __new__ get defined
 }
Esempio n. 2
0
        public override bool Walk(ReturnStatement node)
        {
            foreach (var type in _scope.GetTypesFromValue(_scope.GetValueFromExpression(node.Expression)))
            {
                _returnTypes.Add(type);
            }

            return(false);
        }
        public override bool Walk(ReturnStatement node)
        {
            var types = _scope.GetTypesFromValue(_scope.GetValueFromExpression(node.Expression)).ExcludeDefault();

            foreach (var type in types)
            {
                _overload.ReturnTypes.Add(type);
            }

            // Clean up: if there are None or Unknown types along with real ones, remove them.
            var realTypes = _overload.ReturnTypes
                            .Where(t => t.TypeId != BuiltinTypeId.Unknown && t.TypeId != BuiltinTypeId.NoneType)
                            .ToList();

            if (realTypes.Count > 0)
            {
                _overload.ReturnTypes.Clear();
                _overload.ReturnTypes.AddRange(realTypes);
            }
            return(true); // We want to evaluate all code so all private variables in __new__ get defined
        }