protected RapidXamlDisplayedTag(TagDependencies deps, string errorCode, TagErrorType defaultErrorType)
            : base(deps.Span, deps.Snapshot, deps.FileName, deps.Logger)
        {
            if (deps.Span.Start > deps.Snapshot.Length)
            {
                if (deps.Snapshot.Length > 0)
                {
                    deps.Logger?.RecordError(
                        $"Span calculated outside snapshot for ErrorCode={errorCode}",
                        deps.TelemetryProperties);
                }

                // Reset the span location to something that's definitely valid
                deps.Span = new Span(0, 0);
            }

            var line = deps.Snapshot.GetLineFromPosition(deps.Span.Start);
            var col  = deps.Span.Start - line.Start.Position;

            this.ErrorCode                  = errorCode;
            this.Line                       = line.LineNumber;
            this.Column                     = col;
            this.DefaultErrorType           = defaultErrorType;
            this.VsPfp                      = deps.VsPfp;
            this.ProjectFilePath            = deps.ProjectFilePath;
            this.MoreInfoUrl                = deps.MoreInfoUrl;
            this.CustomFeatureUsageOverride = deps.FeatureUsageOverride;
        }
Beispiel #2
0
        protected RapidXamlDisplayedTag(TagDependencies deps, string errorCode, TagErrorType defaultErrorType)
            : base(deps.Span, deps.Snapshot, deps.FileName, deps.Logger)
        {
            var line = deps.Snapshot.GetLineFromPosition(deps.Span.Start);
            var col  = deps.Span.Start - line.Start.Position;

            this.ErrorCode                  = errorCode;
            this.Line                       = line.LineNumber;
            this.Column                     = col;
            this.DefaultErrorType           = defaultErrorType;
            this.VsAbstraction              = deps.VsAbstraction;
            this.ProjectFilePath            = deps.ProjectFilePath;
            this.MoreInfoUrl                = deps.MoreInfoUrl;
            this.CustomFeatureUsageOverride = deps.FeatureUsageOverride;
        }
Beispiel #3
0
        public static bool TryParse(string value, out TagErrorType tagErrorType)
        {
            try
            {
                // Could potentially happen with a corrupt/invalid settings file.
                if (string.IsNullOrWhiteSpace(value))
                {
                    // Most tags are warnings so return that but caller shouldn't use as this returns false.
                    tagErrorType = TagErrorType.Warning;
                    return(false);
                }

                switch (value.Trim().ToLowerInvariant())
                {
                case "error":
                    tagErrorType = TagErrorType.Error;
                    break;

                case "warning":
                    tagErrorType = TagErrorType.Warning;
                    break;

                case "suggestion":
                    tagErrorType = TagErrorType.Suggestion;
                    break;

                case "hidden":
                case "none":
                    tagErrorType = TagErrorType.Hidden;
                    break;

                default:
                    tagErrorType = TagErrorType.Hidden;
                    return(false);
                }

                return(true);
            }
            catch (System.Exception exc)
            {
                SharedRapidXamlPackage.Logger?.RecordException(exc);

                tagErrorType = TagErrorType.Hidden;
                return(false);
            }
        }
Beispiel #4
0
        public static string AsVsAdornmentErrorType(this TagErrorType source)
        {
            switch (source)
            {
            case TagErrorType.Error:
                return(PredefinedErrorTypeNames.OtherError);

            case TagErrorType.Suggestion:
                return(PredefinedErrorTypeNames.Suggestion);

            case TagErrorType.Hidden:
                // Need to return something that won't cause a problem for the editor.
                // Shouldn't be creating tags for things that are hidden so shouldn't ever get here.
                return(PredefinedErrorTypeNames.HintedSuggestion);

            case TagErrorType.Warning:
            default:
                return(PredefinedErrorTypeNames.Warning);
            }
        }
        protected RapidXamlDisplayedTag(Span span, ITextSnapshot snapshot, string fileName, string errorCode, TagErrorType defaultErrorType, ILogger logger)
            : base(span, snapshot, fileName, logger)
        {
            var line = snapshot.GetLineFromPosition(span.Start);
            var col  = span.Start - line.Start.Position;

            this.ErrorCode        = errorCode;
            this.Line             = line.LineNumber;
            this.Column           = col;
            this.DefaultErrorType = defaultErrorType;
        }
 protected MissingDefinitionTag(Span span, ITextSnapshot snapshot, string fileName, string errorCode, TagErrorType defaultErrorType, ILogger logger)
     : base(span, snapshot, fileName, errorCode, defaultErrorType, logger)
 {
 }
Beispiel #7
0
        protected RapidXamlDisplayedTag(Span span, ITextSnapshot snapshot, string fileName, string errorCode, TagErrorType defaultErrorType, ILogger logger, string moreInfoUrl = null, string featureUsageOverride = null)
            : base(span, snapshot, fileName, logger)
        {
            var line = snapshot.GetLineFromPosition(span.Start);
            var col  = span.Start - line.Start.Position;

            this.ErrorCode                  = errorCode;
            this.Line                       = line.LineNumber;
            this.Column                     = col;
            this.DefaultErrorType           = defaultErrorType;
            this.MoreInfoUrl                = moreInfoUrl;
            this.CustomFeatureUsageOverride = featureUsageOverride;
        }
Beispiel #8
0
 protected MissingDefinitionTag(TagDependencies tagDeps, string errorCode, TagErrorType defaultErrorType)
     : base(tagDeps, errorCode, defaultErrorType)
 {
 }