Exemplo n.º 1
0
        private static GeneratorState SetGeneratorException(CommonMessageProvider provider, GeneratorState generatorState, ISourceGenerator generator, Exception e, DiagnosticBag?diagnosticBag, bool isInit = false)
        {
            var errorCode = isInit ? provider.WRN_GeneratorFailedDuringInitialization : provider.WRN_GeneratorFailedDuringGeneration;

            // ISSUE: Diagnostics don't currently allow descriptions with arguments, so we have to manually create the diagnostic description
            // ISSUE: Exceptions also don't support IFormattable, so will always be in the current UI Culture.
            // ISSUE: See https://github.com/dotnet/roslyn/issues/46939

            var description = string.Format(provider.GetDescription(errorCode).ToString(CultureInfo.CurrentUICulture), e);

            var descriptor = new DiagnosticDescriptor(
                provider.GetIdForErrorCode(errorCode),
                provider.GetTitle(errorCode),
                provider.GetMessageFormat(errorCode),
                description: description,
                category: "Compiler",
                defaultSeverity: DiagnosticSeverity.Warning,
                isEnabledByDefault: true,
                customTags: WellKnownDiagnosticTags.AnalyzerException);

            var diagnostic = Diagnostic.Create(descriptor, Location.None, generator.GetType().Name, e.GetType().Name, e.Message);

            diagnosticBag?.Add(diagnostic);
            return(new GeneratorState(generatorState.Info, e, diagnostic));
        }
Exemplo n.º 2
0
        private static DiagnosticDescriptor CreateDescriptor(
            int errorCode,
            DiagnosticSeverity defaultSeverity,
            CommonMessageProvider messageProvider
            )
        {
            var id            = messageProvider.GetIdForErrorCode(errorCode);
            var title         = messageProvider.GetTitle(errorCode);
            var description   = messageProvider.GetDescription(errorCode);
            var messageFormat = messageProvider.GetMessageFormat(errorCode);
            var helpLink      = messageProvider.GetHelpLink(errorCode);
            var category      = messageProvider.GetCategory(errorCode);
            var customTags    = GetCustomTags(defaultSeverity);

            return(new DiagnosticDescriptor(
                       id,
                       title,
                       messageFormat,
                       category,
                       defaultSeverity,
                       isEnabledByDefault: true,
                       description: description,
                       helpLinkUri: helpLink,
                       customTags: customTags
                       ));
        }
Exemplo n.º 3
0
 private static DiagnosticDescriptor CreateDescriptor(int errorCode, DiagnosticSeverity defaultSeverity, CommonMessageProvider messageProvider)
 {
     var id = messageProvider.GetIdForErrorCode(errorCode);
     var title = messageProvider.GetTitle(errorCode);
     var description = messageProvider.GetDescription(errorCode);
     var messageFormat = messageProvider.GetMessageFormat(errorCode);
     var helpLink = messageProvider.GetHelpLink(errorCode);
     var category = messageProvider.GetCategory(errorCode);
     var customTags = GetCustomTags(defaultSeverity);
     return new DiagnosticDescriptor(id, title, messageFormat, category, defaultSeverity,
         isEnabledByDefault: true, description: description, helpLinkUri: helpLink, customTags: customTags);
 }
Exemplo n.º 4
0
        private static DiagnosticDescriptor CreateDescriptor(int errorCode, DiagnosticSeverity defaultSeverity, CommonMessageProvider messageProvider)
        {
            string                  id            = messageProvider.GetIdForErrorCode(errorCode);
            LocalizableString       title         = messageProvider.GetTitle(errorCode);
            LocalizableString       description   = messageProvider.GetDescription(errorCode);
            LocalizableString       messageFormat = messageProvider.GetMessageFormat(errorCode);
            string                  helpLink      = messageProvider.GetHelpLink(errorCode);
            string                  category      = messageProvider.GetCategory(errorCode);
            ImmutableArray <string> customTags    = GetCustomTags(defaultSeverity);

            return(new DiagnosticDescriptor(id, title, messageFormat, category, defaultSeverity,
                                            isEnabledByDefault: true, description: description, helpLinkUri: helpLink, customTags: customTags));
        }