未验证 提交 29e57ecf 编写于 作者: D Dirk Bäumer 提交者: GitHub

Merge pull request #39935 from doudou/handle_multiline_messages

handle multi-line messages in multi-line patterns
......@@ -12,6 +12,7 @@ import * as Assert from 'vs/base/common/assert';
import * as Paths from 'vs/base/common/paths';
import * as Types from 'vs/base/common/types';
import * as UUID from 'vs/base/common/uuid';
import * as Platform from 'vs/base/common/platform';
import Severity from 'vs/base/common/severity';
import URI from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
......@@ -189,6 +190,8 @@ export function createLineMatcher(matcher: ProblemMatcher): ILineMatcher {
}
}
const endOfLine: string = Platform.OS === Platform.OperatingSystem.Windows ? '\r\n' : '\n';
abstract class AbstractLineMatcher implements ILineMatcher {
private matcher: ProblemMatcher;
......@@ -208,7 +211,7 @@ abstract class AbstractLineMatcher implements ILineMatcher {
protected fillProblemData(data: ProblemData, pattern: ProblemPattern, matches: RegExpExecArray): void {
this.fillProperty(data, 'file', pattern, matches, true);
this.fillProperty(data, 'message', pattern, matches, true);
this.appendProperty(data, 'message', pattern, matches, true);
this.fillProperty(data, 'code', pattern, matches, true);
this.fillProperty(data, 'severity', pattern, matches, true);
this.fillProperty(data, 'location', pattern, matches, true);
......@@ -218,6 +221,19 @@ abstract class AbstractLineMatcher implements ILineMatcher {
this.fillProperty(data, 'endCharacter', pattern, matches);
}
private appendProperty(data: ProblemData, property: keyof ProblemData, pattern: ProblemPattern, matches: RegExpExecArray, trim: boolean = false): void {
if (Types.isUndefined(data[property])) {
this.fillProperty(data, property, pattern, matches, trim);
}
else if (!Types.isUndefined(pattern[property]) && pattern[property] < matches.length) {
let value = matches[pattern[property]];
if (trim) {
value = Strings.trim(value);
}
data[property] += endOfLine + value;
}
}
private fillProperty(data: ProblemData, property: keyof ProblemData, pattern: ProblemPattern, matches: RegExpExecArray, trim: boolean = false): void {
if (Types.isUndefined(data[property]) && !Types.isUndefined(pattern[property]) && pattern[property] < matches.length) {
let value = matches[pattern[property]];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册