Example #1
0
        /// <summary>
        /// Evaluates all named values and all reachable file modules via local import/export relation.
        /// </summary>
        protected internal async Task <bool> EvaluateAllTransitiveClosureAsync(
            ImmutableContextBase context,
            ModuleEvaluationMode mode,
            VisitedModuleTracker tracker)
        {
            var evaluateTasks = new List <Task <object> >();

            EvaluateAllNamedValues(context, evaluateTasks);

            object[] results = await TaskUtilities.WithCancellationHandlingAsync(
                context.LoggingContext,
                Task.WhenAll(evaluateTasks),
                context.Logger.EvaluationCanceled,
                s_errorValueAsObjectArray,
                context.EvaluationScheduler.CancellationToken);

            return(results.All(result => !result.IsErrorValue()));
        }
Example #2
0
        /// <summary>
        /// Evaluates all.
        /// </summary>
        public Task <bool> EvaluateAllAsync(ImmutableContextBase context, VisitedModuleTracker moduleTracker, ModuleEvaluationMode mode = ModuleEvaluationMode.None)
        {
            if (mode == ModuleEvaluationMode.None)
            {
                moduleTracker.Track(this, context);
                return(EvaluateAllNamedValuesAsync(context));
            }

            return(EvaluateAllTransitiveClosureAsync(context, mode, moduleTracker));
        }