コード例 #1
0
 public TexlError Error(DocumentErrorSeverity severity, TexlNode node, ErrorResourceKey errKey, params object[] args)
 {
     if (severity <= this.maximumSeverity)
     {
         return(errors.Error(severity, node, errKey, args));
     }
     return(null);
 }
コード例 #2
0
ファイル: TexlError.cs プロジェクト: jgrisham/Power-Fx
        public TexlError(Token tok, DocumentErrorSeverity severity, ErrorResourceKey errKey, params object[] args)
            : base(null, null, DocumentErrorKind.AXL, severity, errKey, args)
        {
            Contracts.AssertValue(tok);

            Tok      = tok;
            TextSpan = new Span(tok.VerifyValue().Span.Min, tok.VerifyValue().Span.Lim);

            _nameMapIDs = new List <string>();
        }
コード例 #3
0
        public TexlError Error(DocumentErrorSeverity severity, TexlNode node, ErrorResourceKey errKey, params object[] args)
        {
            Contracts.AssertValue(node);
            Contracts.AssertValue(args);

            TexlError err = new TexlError(node, severity, errKey, args);

            CollectionUtils.Add(ref _errors, err);
            return(err);
        }
コード例 #4
0
ファイル: TexlError.cs プロジェクト: jgrisham/Power-Fx
        public TexlError(TexlNode node, DocumentErrorSeverity severity, ErrorResourceKey errKey, params object[] args)
            : base(null, null, DocumentErrorKind.AXL, severity, errKey, args)
        {
            Contracts.AssertValue(node);
            Contracts.AssertValue(node.Token);

            Node     = node;
            Tok      = node.Token;
            TextSpan = node.GetTextSpan();

            _nameMapIDs = new List <string>();
        }
コード例 #5
0
        public TexlError EnsureError(DocumentErrorSeverity severity, TexlNode node, ErrorResourceKey errKey, params object[] args)
        {
            Contracts.AssertValue(node);
            Contracts.AssertValue(args);

            if (!HasErrors(node, severity))
            {
                return(Error(severity, node, errKey, args));
            }

            return(null);
        }
コード例 #6
0
        internal BaseError(IDocumentError innerError, Exception internalException, DocumentErrorKind kind, DocumentErrorSeverity severity, ErrorResourceKey errKey, Span textSpan, IEnumerable <string> sinkTypeErrors, params object[] args)
        {
            Contracts.AssertValueOrNull(innerError);
            Contracts.AssertValueOrNull(args);
            Contracts.AssertValueOrNull(internalException);
            Contracts.AssertValueOrNull(textSpan);
            Contracts.AssertValueOrNull(sinkTypeErrors);

            InnerError        = innerError;
            ErrorKind         = kind;
            Entity            = string.Empty;
            PropertyName      = string.Empty;
            Parent            = string.Empty;
            Severity          = severity;
            InternalException = internalException;
            TextSpan          = textSpan;
            SinkTypeErrors    = sinkTypeErrors;
            MessageKey        = errKey.Key;
            MessageArgs       = args;

            // We expect errKey to be the key for an error resource object within string resources.
            // We fall back to using a basic content string within string resources, for errors
            // that haven't yet been converted to an ErrorResource in the Resources.pares file.
            ErrorResource errorResource;
            string        shortMessage;
            string        longMessage;

            if (!StringResources.TryGetErrorResource(errKey, out errorResource))
            {
                errorResource = null;
                shortMessage  = StringResources.Get(errKey.Key);
                longMessage   = null;
            }
            else
            {
                shortMessage = errorResource.GetSingleValue(ErrorResource.ShortMessageTag);
                Contracts.AssertValue(shortMessage);
                longMessage = errorResource.GetSingleValue(ErrorResource.LongMessageTag);
            }


            ShortMessage     = FormatMessage(shortMessage, args);
            LongMessage      = FormatMessage(longMessage, args);
            HowToFixMessages = errorResource?.GetValues(ErrorResource.HowToFixTag) ?? GetHowToFix(errKey.Key);
            WhyToFixMessage  = errorResource?.GetSingleValue(ErrorResource.WhyToFixTag) ?? string.Empty;
            Links            = errorResource?.HelpLinks;
        }
コード例 #7
0
        public bool HasErrorsInTree(TexlNode rootNode, DocumentErrorSeverity severity = DocumentErrorSeverity.Suggestion)
        {
            Contracts.AssertValue(rootNode);

            if (CollectionUtils.Size(_errors) == 0)
            {
                return(false);
            }

            foreach (var err in _errors)
            {
                if (err.Node.InTree(rootNode) && err.Severity >= severity)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #8
0
ファイル: LanguageServer.cs プロジェクト: jgrisham/Power-Fx
 /// <summary>
 /// PowerFx classifies diagnostics by <see cref="DocumentErrorSeverity"/>, LSP classifies them by
 /// <see cref="DiagnosticSeverity"/>. This method maps the former to the latter.
 /// </summary>
 /// <param name="severity">
 /// <see cref="DocumentErrorSeverity"/> which will be mapped to the LSP eequivalent.
 /// </param>
 /// <returns>
 /// <see cref="DiagnosticSeverity"/> equivalent to <see cref="DocumentErrorSeverity"/>
 /// </returns>
 private DiagnosticSeverity DocumentSeverityToDiagnosticSeverityMap(DocumentErrorSeverity severity) => severity switch
 {
コード例 #9
0
 public TexlError Error(DocumentErrorSeverity severity, TexlNode node, ErrorResourceKey errKey, params object[] args)
 {
     return(null);
 }
コード例 #10
0
        private static DateTime?GetDate(string elementId, JObject nittyGritty, Document document, DocumentErrorSeverity severity = DocumentErrorSeverity.Warning)
        {
            string dateAsString;

            try
            {
                dateAsString = nittyGritty[elementId]["text"].ToString();
            }
            catch (NullReferenceException)
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0006", ErrorSeverity = severity, ErrorMessage = SafeString($"GetDate() Specified Element {elementId} is null")
                });
                return(null);
            }
            catch (Exception)
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0006", ErrorSeverity = severity, ErrorMessage = SafeString($"GetDate() Specified Element {elementId} does not exist in recognized output")
                });
                return(null);
            }

            DateTime dateValue;

            if (DateTime.TryParse(dateAsString, out dateValue))
            {
                return(dateValue);
            }
            else
            {
                string safeDateAsString = dateAsString.Replace("'", ParsingConstants.IllegalCharacterMarker);
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0007", ErrorSeverity = severity, ErrorMessage = SafeString($"GetDate() Specified Element {elementId} does not contain a valid date: TaxDate={dateAsString}")
                });
                return(null);
            }
        }
コード例 #11
0
        private static Decimal?GetNumber(string elementId, JObject nittyGritty, Document document, DocumentErrorSeverity severity = DocumentErrorSeverity.Warning)
        {
            string numberAsString;

            try
            {
                numberAsString = nittyGritty[elementId]["text"].ToString();
            }
            catch (NullReferenceException)
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0002", ErrorSeverity = severity, ErrorMessage = SafeString($"GetNumber() Specified Element {elementId} is null")
                });
                return(null);
            }
            catch (Exception)
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0002", ErrorSeverity = severity, ErrorMessage = SafeString($"GetNumber() Specified Element {elementId} does not exist in recognized output")
                });
                return(null);
            }

            if (numberAsString == null)
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0003", ErrorSeverity = severity, ErrorMessage = SafeString($"GetNumber() {elementId} exists but its value is null")
                });
                return(null);
            }

            if (Decimal.TryParse(numberAsString.Trim().Replace(" ", string.Empty), out decimal numberValue))
            {
                if (numberValue == 0)
                {
                    document.Errors.Add(new DocumentError {
                        ErrorCode = "PRE0004", ErrorSeverity = DocumentErrorSeverity.Warning, ErrorMessage = SafeString($"GetNumber() {elementId} exists but its value is zero")
                    });
                }

                return(numberValue);
            }
            else
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0005", ErrorSeverity = severity, ErrorMessage = SafeString($"GetNumber() {elementId} exists but cannot be parsed as a number={numberAsString}")
                });
                return(null);
            }
        }
コード例 #12
0
        private static string GetString(string elementId, JObject nittyGritty, Document document, DocumentErrorSeverity severity = DocumentErrorSeverity.Warning)
        {
            string value;

            try
            {
                value = SafeString(nittyGritty[elementId]["text"].ToString());
            }
            catch (NullReferenceException)
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0001", ErrorSeverity = severity, ErrorMessage = SafeString($"GetString() Specified Element {elementId} is null")
                });
                return(null);
            }
            catch (Exception)
            {
                document.Errors.Add(new DocumentError {
                    ErrorCode = "PRE0001", ErrorSeverity = severity, ErrorMessage = SafeString($"GetString() Specified Element {elementId} does not exist in recognized output")
                });
                return(null);
            }
            return(value);
        }
コード例 #13
0
 public LimitedSeverityErrorContainer(IErrorContainer errors, DocumentErrorSeverity maximumSeverity)
 {
     this.errors          = errors;
     this.maximumSeverity = maximumSeverity;
 }
コード例 #14
0
 internal BaseError(IDocumentError innerError, Exception internalException, DocumentErrorKind kind, DocumentErrorSeverity severity, ErrorResourceKey errKey, params object[] args)
     : this(innerError, internalException, kind, severity, errKey, textSpan : null, sinkTypeErrors : null, args : args)
 {
 }