Ejemplo n.º 1
0
        protected AbstractEmbeddedLanguageDiagnosticAnalyzer(
            IEmbeddedLanguageFeaturesProvider languagesProvider)
        {
            var supportedDiagnostics = ArrayBuilder <DiagnosticDescriptor> .GetInstance();

            var analyzers = ArrayBuilder <AbstractBuiltInCodeStyleDiagnosticAnalyzer> .GetInstance();

            var category = default(DiagnosticAnalyzerCategory?);

            Debug.Assert(languagesProvider.Languages.Length > 0);
            foreach (var language in languagesProvider.Languages)
            {
                var analyzer = language.DiagnosticAnalyzer;
                if (analyzer != null)
                {
                    analyzers.Add(analyzer);
                    supportedDiagnostics.AddRange(analyzer.SupportedDiagnostics);

                    category = category ?? analyzer.GetAnalyzerCategory();
                    Debug.Assert(category == analyzer.GetAnalyzerCategory(),
                                 "All embedded analyzers must have the same analyzer category.");
                }
            }

            _category  = category.Value;
            _analyzers = analyzers.ToImmutableAndFree();
            this.SupportedDiagnostics = supportedDiagnostics.ToImmutableAndFree();
        }
 public EmbeddedLanguageCompletionProvider(IEmbeddedLanguageFeaturesProvider languagesProvider)
 {
     _languageProviders = languagesProvider?.Languages ?? ImmutableArray <IEmbeddedLanguageFeatures> .Empty;
 }