static DiagnosticMessage MakeInternal(DiagnosticType type, string errorCode, string messageData, MethodDefinition method, Instruction instruction)
        {
            var result = new DiagnosticMessage {
                Column = 0, Line = 0, DiagnosticType = type, File = ""
            };

            var seq = instruction != null?CecilHelpers.FindBestSequencePointFor(method, instruction) : null;

            if (errorCode.Contains("ICE"))
            {
                messageData = messageData + " Seeing this error indicates a bug in the dots compiler. We'd appreciate a bug report (About->Report a Bug...). Thnx! <3";
            }

            var errorType = type == DiagnosticType.Error ? "error" : "warning";

            messageData = $"{errorType} {errorCode}: {messageData}";
            if (seq != null)
            {
                result.File   = seq.Document.Url;
                result.Column = seq.StartColumn;
                result.Line   = seq.StartLine;
#if !UNITY_DOTSRUNTIME
                var shortenedFilePath = seq.Document.Url.Replace($"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}", "");
                result.MessageData = $"{shortenedFilePath}({seq.StartLine},{seq.StartColumn}): {messageData}";
#else
                result.MessageData = messageData;
#endif
            }
            else
            {
                result.MessageData = messageData;
            }

            return(result);
        }
        public static DiagnosticMessage MakeError(string errorCode, string messageData, MethodDefinition method, Instruction instruction)
        {
            var result = new DiagnosticMessage {
                Column = 0, Line = 0, DiagnosticType = DiagnosticType.Error, File = ""
            };

            var seq = instruction != null?CecilHelpers.FindBestSequencePointFor(method, instruction) : null;

            if (errorCode.Contains("ICE"))
            {
                messageData = messageData + " Seeing this error indicates a bug in the dots compiler. We'd appreciate a bug report (About->Report a Problem). Thnx! <3";
            }

            messageData = $"error {errorCode}: {messageData}";
            if (seq != null)
            {
                result.File        = seq.Document.Url;
                result.Column      = seq.StartColumn;
                result.Line        = seq.StartLine;
                result.MessageData = $"{seq.Document.Url}:({seq.StartLine},{seq.StartColumn}) {messageData}";
            }
            else
            {
                result.MessageData = messageData;
            }

            return(result);
        }
Exemple #3
0
        public SequencePoint SequencePointFor(MethodDefinition context = null)
        {
            SequencePoint seq = null;

            if (Instruction != null)
            {
                seq = CecilHelpers.FindBestSequencePointFor(Method ?? context, Instruction);
            }

            if (seq == null && Method != null)
            {
                seq = Method.DebugInformation.SequencePoints.FirstOrDefault();
            }

            return(seq);
        }