public EmbeddedLanguagesClassifier(IEmbeddedLanguagesProvider languagesProvider)
 {
     _languagesProvider = languagesProvider;
     SyntaxTokenKinds   = languagesProvider.Languages
                          .Where(p => p.Classifier != null)
                          .SelectMany(p => p.Classifier.SyntaxTokenKinds)
                          .Distinct()
                          .ToImmutableArray();
 }
Esempio n. 2
0
        protected AbstractEmbeddedLanguageDiagnosticAnalyzer(
            IEmbeddedLanguagesProvider languagesProvider)
        {
            var supportedDiagnostics = ArrayBuilder <DiagnosticDescriptor> .GetInstance();

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

            if (languagesProvider != null)
            {
                foreach (var language in languagesProvider.GetEmbeddedLanguages())
                {
                    var analyzer = language.DiagnosticAnalyzer;
                    if (analyzer != null)
                    {
                        analyzers.Add(analyzer);
                        supportedDiagnostics.AddRange(analyzer.SupportedDiagnostics);
                    }
                }
            }

            _analyzers = analyzers.ToImmutableAndFree();
            this.SupportedDiagnostics = supportedDiagnostics.ToImmutableAndFree();
        }
        protected AbstractEmbeddedLanguageCodeFixProvider(
            IEmbeddedLanguagesProvider embeddedLanguagesProvider)
        {
            _diagnosticIdToCodeFixProvider = new Dictionary <string, IEmbeddedCodeFixProvider>();

            // Create a mapping from each IEmbeddedCodeFixProvider.FixableDiagnosticIds back to the
            // IEmbeddedCodeFixProvider itself.  That way, when we hear about diagnostics, we know
            // which provider to actually do the fixing.
            foreach (var language in embeddedLanguagesProvider.GetEmbeddedLanguages())
            {
                var codeFixProvider = language.CodeFixProvider;
                if (codeFixProvider != null)
                {
                    foreach (var diagnosticId in codeFixProvider.FixableDiagnosticIds)
                    {
                        // 'Add' is intentional.  We want to throw if multiple fix providers
                        // register for the say diagnostic ID.
                        _diagnosticIdToCodeFixProvider.Add(diagnosticId, codeFixProvider);
                    }
                }
            }

            this.FixableDiagnosticIds = _diagnosticIdToCodeFixProvider.Keys.ToImmutableArray();
        }
 protected AbstractEmbeddedLanguagesClassifier(IEmbeddedLanguagesProvider languagesProvider)
 {
     _languagesProvider = languagesProvider;
     SyntaxTokenKinds   =
         languagesProvider.Languages.SelectMany(p => p.Classifier.SyntaxTokenKinds).Distinct().ToImmutableArray();
 }
 public EmbeddedLanguageCompletionProvider(IEmbeddedLanguagesProvider languagesProvider)
 {
     _languageProviders = languagesProvider?.Languages ?? ImmutableArray <IEmbeddedLanguage> .Empty;
 }
 protected AbstractEmbeddedLanguagesTokenClassifier(IEmbeddedLanguagesProvider languagesProvider)
 {
     _languagesProvider = languagesProvider;
 }