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 readonly GeneratorInfo Generator; public FunctionEnvironmentRecord( UserFunctionValue function, FunctionAnalysisUnit analysisUnit, Node node, EnvironmentRecord declScope, IJsProjectEntry declModule ) : base(node, declScope) { _function = function; _this = new VariableDef(); AnalysisUnit = analysisUnit; #if FALSE if (Function.FunctionObject.IsGenerator) { Generator = new GeneratorInfo(function.ProjectState, declModule); ReturnValue.AddTypes(function.ProjectEntry, Generator.SelfSet, false); } #endif }