internal ImmutableContextBase( ContextTree contextTree, ImmutableContextBase parent, [NotNull] ModuleLiteral module, TopLevelValueInfo topLevelValueInfo, FileType fileType, EvaluatorConfiguration configuration, [NotNull] IEvaluationScheduler evaluationScheduler) { Contract.Requires(contextTree.IsValid); Contract.Requires(parent == null || parent.ContextTree == contextTree); Contract.Requires(module != null); Contract.Requires(evaluationScheduler != null); ParentContext = parent; LastActiveUsedModule = module; TopLevelValueInfo = topLevelValueInfo; ContextTree = contextTree; DebugState = new DebugState(); m_relativePath = RelativePath.Invalid; EvaluatorConfiguration = configuration; EvaluationScheduler = evaluationScheduler; FileType = fileType; if (parent != null) { m_callStack = parent.m_callStack; } }
public ContextTree( [NotNull] FrontEndHost frontEndHost, [NotNull] FrontEndContext frontEndContext, [NotNull] GlobalConstants constants, [NotNull] ModuleRegistry moduleRegistry, [NotNull] Logger logger, [NotNull] EvaluationStatistics statistics, QualifierValueCache qualifierValueCache, bool isBeingDebugged, IDecorator <EvaluationResult> decorator, [NotNull] FileModuleLiteral module, [NotNull] EvaluatorConfiguration configuration, [NotNull] IEvaluationScheduler evaluationScheduler, FileType fileType) { Contract.Requires(frontEndHost != null); Contract.Requires(frontEndContext != null); Contract.Requires(constants != null); Contract.Requires(moduleRegistry != null); Contract.Requires(logger != null); Contract.Requires(statistics != null); Contract.Requires(module != null); EvaluationScheduler = evaluationScheduler; FrontEndHost = frontEndHost; FrontEndContext = frontEndContext; Constants = constants; ModuleRegistry = moduleRegistry; Logger = logger; Statistics = statistics; IsBeingDebugged = isBeingDebugged; Decorator = decorator; EvaluationScheduler = evaluationScheduler; QualifierValueCache = qualifierValueCache; ToolDefinitionCache = new ConcurrentDictionary <ObjectLiteral, CachedToolDefinition>(); ValueCache = new ConcurrentDictionary <Fingerprint, EvaluationResult>(); CommonConstants = new CommonConstants(frontEndContext.StringTable); RootContext = new Context( contextTree: this, parent: null, module: module, topLevelValueInfo: null, fileType: fileType, configuration: configuration, evaluationScheduler: evaluationScheduler); Interlocked.Increment(ref statistics.ContextTrees); }