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 }
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 }