private void CompileThreadOutput(string line, bool stdErr) { if (_pane == null) { return; } var index = line.IndexOf(": error :"); if (index >= 0) { string fileName; int lineNum; if (ParseFileNameAndLine(line.Substring(0, index), out fileName, out lineNum)) { var message = line.Substring(index + ": error :".Length).Trim(); var task = new DkTools.ErrorTagging.ErrorTask(fileName, lineNum - 1, -1, message, ErrorType.Error, ErrorTaskSource.Compile, null, null); ErrorTaskProvider.Instance.Add(task); } _pane.WriteLine(line); _numErrors++; return; } index = line.IndexOf(": warning :"); if (index >= 0) { string fileName; int lineNum; if (ParseFileNameAndLine(line.Substring(0, index), out fileName, out lineNum)) { var message = line.Substring(index + ": warning :".Length).Trim(); var task = new DkTools.ErrorTagging.ErrorTask(fileName, lineNum - 1, -1, message, ErrorType.Warning, ErrorTaskSource.Compile, null, null); ErrorTaskProvider.Instance.Add(task); } _pane.WriteLine(line); _numWarnings++; return; } if (line.StartsWith("LINK : fatal error")) { var message = line.Substring("LINK : fatal error".Length).Trim(); var task = new DkTools.ErrorTagging.ErrorTask(string.Empty, 0, -1, message, ErrorType.Error, ErrorTaskSource.Compile, null, null); _pane.WriteLine(line); _numErrors++; return; } if (line.Equals("Build failed.")) { var task = new DkTools.ErrorTagging.ErrorTask(string.Empty, 0, -1, "Build failed.", ErrorType.Error, ErrorTaskSource.Compile, null, null); ErrorTaskProvider.Instance.Add(task); _buildFailed = true; _pane.WriteLine(line); return; } if (line.IndexOf("Compile failed", StringComparison.OrdinalIgnoreCase) >= 0) { var task = new DkTools.ErrorTagging.ErrorTask(string.Empty, 0, -1, line, ErrorType.Error, ErrorTaskSource.Compile, null, null); ErrorTaskProvider.Instance.Add(task); _buildFailed = true; _pane.WriteLine(line); return; } Match match; if ((match = _rxLinkError.Match(line)).Success) { _pane.WriteLineAndTask(line, line.Substring(match.Groups[1].Index), OutputPane.TaskType.Error, "", 0); _numErrors++; return; } _pane.WriteLine(line); }