Пример #1
0
        /// <summary>
        /// Runs AST conversion on the given target path.
        /// </summary>
        /// <remarks>
        /// The target path is assumed to already be part of the workspace contained by the given host
        /// </remarks>
        public static Task <SourceFileParseResult> RunAstConversionAsync(FrontEndHost host, FrontEndContext context, Script.Tracing.Logger logger, IFrontEndStatistics stats, Package package, AbsolutePath conversionTarget)
        {
            Contract.RequiresNotNull(host);
            Contract.RequiresNotNull(context);
            Contract.RequiresNotNull(logger);
            Contract.RequiresNotNull(stats);
            Contract.RequiresNotNull(package);
            Contract.Requires(conversionTarget.IsValid);

            var configuration = AstConversionConfiguration.FromConfiguration(host.Configuration.FrontEnd);
            var linter        = DiagnosticAnalyzer.Create(
                logger,
                context.LoggingContext,
                new HashSet <string>(configuration.PolicyRules),
                configuration.DisableLanguagePolicies);

            var workspace     = (Workspace)host.Workspace;
            var factory       = new RuntimeModelFactory(stats, configuration, linter, workspace);
            var parserContext = new RuntimeModelContext(
                host,
                frontEndContext: context,
                logger,
                package: package,
                origin: default(LocationData));

            var sourceFile = workspace.GetSourceFile(conversionTarget);

            return(factory.ConvertSourceFileAsync(parserContext, sourceFile));
        }
Пример #2
0
 /// <summary>
 /// Creates a linter given <see cref="AstConversionConfiguration"/>.
 /// </summary>
 protected DiagnosticAnalyzer CreateLinter(AstConversionConfiguration configuration)
 {
     return(DiagnosticAnalyzer.Create(
                Logger,
                Context.LoggingContext,
                new HashSet <string>(configuration.PolicyRules),
                configuration.DisableLanguagePolicies));
 }
Пример #3
0
        /// <summary>
        /// Creates a parser based on the front end configuration passed at initialization time.
        /// </summary>
        /// <remarks>
        /// The created parser schedules parsing imports as it finds them
        /// </remarks>
        protected RuntimeModelFactory CreateRuntimeModelFactory(Workspace workspace)
        {
            var configuration = AstConversionConfiguration.FromConfiguration(FrontEndConfiguration);

            return(new RuntimeModelFactory(
                       FrontEndStatistics,
                       configuration,
                       GetOrCreateLinter(configuration),
                       workspace));
        }
Пример #4
0
        /// <nodoc />
        public DScriptExprEvaluator(LoggingContext loggingContext)
        {
            var configuration = new AstConversionConfiguration(
                policyRules: Enumerable.Empty <string>(),
                disableLanguagePolicies: false);

            s_parser = new RuntimeModelFactory(
                m_logger,
                loggingContext,
                new FrontEndStatistics(),
                configuration,
                workspace: null);
        }
Пример #5
0
 /// <nodoc />
 public ConfigurationConversionHelper(
     [CanBeNull] FrontEndEngineAbstraction engine,
     ConfigurationKind kind,
     Logger logger,
     FrontEndHost host,
     FrontEndContext context,
     IConfiguration configuration,
     IFrontEndStatistics statistics)
     : base(statistics, logger, host, context, configuration)
 {
     Engine = engine ?? new SimpleFrontEndEngineAbstraction(context.PathTable, context.FileSystem, configuration);
     Kind   = kind;
     ConversionConfiguration = AstConversionConfiguration.ForConfiguration(FrontEndConfiguration);
     Linter = Lazy.Create(() => CreateLinter(ConversionConfiguration));
 }
Пример #6
0
        /// <nodoc />
        public ExpressionEvaluator(DebuggerState state)
        {
            m_state = state;

            var configuration = new AstConversionConfiguration(
                policyRules: Enumerable.Empty <string>(),
                disableLanguagePolicies: false);

            s_parser = new RuntimeModelFactory(
                m_logger,
                m_state.LoggingContext,
                new FrontEndStatistics(),
                configuration,
                workspace: null);
        }
 /// <nodoc />
 public ConfigurationConversionHelper(
     [CanBeNull] FrontEndEngineAbstraction engine,
     ConfigurationKind kind,
     GlobalConstants constants,
     ModuleRegistry sharedModuleRegistry,
     Logger logger,
     FrontEndHost host,
     FrontEndContext context,
     IConfiguration configuration,
     IFrontEndStatistics statistics = null)
     : base(constants, sharedModuleRegistry, statistics ?? new FrontEndStatistics(), logger, host, context, configuration)
 {
     Engine = engine ?? new SimpleFrontEndEngineAbstraction(context.PathTable, context.FileSystem, configuration);
     Kind   = kind;
     ConversionConfiguration = AstConversionConfiguration.ForConfiguration(FrontEndConfiguration);
     Linter = Lazy.Create(() => CreateLinter(ConversionConfiguration));
 }
Пример #8
0
 /// <summary>
 /// If a linter has already been created by this method (for any given configuration),
 /// returns the existing linter; otherwise, creates a linter given <see cref="AstConversionConfiguration"/>,
 /// saves it, and returns it.
 /// </summary>
 protected DiagnosticAnalyzer GetOrCreateLinter(AstConversionConfiguration configuration)
 {
     return(m_linter ?? (m_linter = CreateLinter(configuration)));
 }