예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
파일: FunctionScope.cs 프로젝트: krus/PTVS
 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);
     }
 }
예제 #4
0
 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);
     }
 }