internal void AddReturnTypes(Node node, AnalysisUnit unit, IAnalysisSet types, bool enqueue = true) { if (IsOriginalClosureScope(OuterScope)) { // Do not add return types to original scope of closure functions return; } if (types?.Any() != true) { return; } if (Coroutine != null) { Coroutine.AddReturn(node, unit, types, enqueue); } else if (Generator != null) { Generator.AddReturn(node, unit, types, enqueue); } else { ReturnValue.MakeUnionStrongerIfMoreThan(unit.State.Limits.ReturnTypes, types); ReturnValue.AddTypes(unit, types, enqueue); } }
public override ISet <Namespace> Call(Node node, AnalysisUnit unit, ISet <Namespace>[] args) { _generator.Callers.AddDependency(unit); _generator.AddReturn(node, unit, base.Call(node, unit, args, keywordArgNames)); return(_generator.SelfSet); }
internal void AddReturnTypes(Node node, AnalysisUnit unit, IAnalysisSet types, bool enqueue = true) { if (Generator != null) { Generator.AddReturn(node, unit, types, enqueue); } else { ReturnValue.MakeUnionStrongerIfMoreThan(unit.ProjectState.Limits.ReturnTypes, types); ReturnValue.AddTypes(unit, types, enqueue); } }
internal void AddReturnTypes(Node node, AnalysisUnit unit, IAnalysisSet types, bool enqueue = true) { if (types?.Any() != true) { return; } if (Coroutine != null) { Coroutine.AddReturn(node, unit, types, enqueue); } else if (Generator != null) { Generator.AddReturn(node, unit, types, enqueue); } else { ReturnValue.MakeUnionStrongerIfMoreThan(unit.State.Limits.ReturnTypes, types); ReturnValue.AddTypes(unit, types, enqueue); } }