提交 b8e8a0ea 编写于 作者: fxy060608's avatar fxy060608

wip(uts): compiler

上级 2b86f699
...@@ -3657,8 +3657,12 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) { ...@@ -3657,8 +3657,12 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) {
column: m.column, column: m.column,
}); });
if (res.source != null && res.line != null && res.column != null) { if (res.source != null && res.line != null && res.column != null) {
const code = consumer.sourceContentFor(res.source, true); let code = consumer.sourceContentFor(res.source, true);
if (code) { if (code) {
code = generateCodeFrame(code, { line: res.line, column: res.column });
if (options.replaceTabsWithSpace) {
code = code.replace(/\t/g, ' ');
}
return { return {
type: m.type, type: m.type,
file: options.sourceRoot file: options.sourceRoot
...@@ -3667,7 +3671,7 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) { ...@@ -3667,7 +3671,7 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) {
line: res.line, line: res.line,
column: res.column, column: res.column,
message: m.message, message: m.message,
code: generateCodeFrame(code, { line: res.line, column: res.column }), code,
}; };
} }
} }
...@@ -3726,7 +3730,7 @@ function generateCodeFrameWithSwiftStacktrace(stacktrace, { name, inputDir, outp ...@@ -3726,7 +3730,7 @@ function generateCodeFrameWithSwiftStacktrace(stacktrace, { name, inputDir, outp
sourceMapFilename, sourceMapFilename,
}); });
} }
function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourceMapFilename, }) { function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourceMapFilename, replaceTabsWithSpace, }) {
return new Promise((resolve) => { return new Promise((resolve) => {
initConsumer(sourceMapFilename).then((consumer) => { initConsumer(sourceMapFilename).then((consumer) => {
if (!consumer) { if (!consumer) {
...@@ -3739,7 +3743,7 @@ function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourc ...@@ -3739,7 +3743,7 @@ function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourc
message, message,
line: parseInt(line), line: parseInt(line),
column: parseInt(column), column: parseInt(column),
}, { sourceRoot }); }, { sourceRoot, replaceTabsWithSpace });
if (!m) { if (!m) {
return substring; return substring;
} }
......
...@@ -3640,8 +3640,12 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) { ...@@ -3640,8 +3640,12 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) {
column: m.column, column: m.column,
}); });
if (res.source != null && res.line != null && res.column != null) { if (res.source != null && res.line != null && res.column != null) {
const code = consumer.sourceContentFor(res.source, true); let code = consumer.sourceContentFor(res.source, true);
if (code) { if (code) {
code = generateCodeFrame(code, { line: res.line, column: res.column });
if (options.replaceTabsWithSpace) {
code = code.replace(/\t/g, ' ');
}
return { return {
type: m.type, type: m.type,
file: options.sourceRoot file: options.sourceRoot
...@@ -3650,7 +3654,7 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) { ...@@ -3650,7 +3654,7 @@ function generateCodeFrameSourceMapConsumer(consumer, m, options = {}) {
line: res.line, line: res.line,
column: res.column, column: res.column,
message: m.message, message: m.message,
code: generateCodeFrame(code, { line: res.line, column: res.column }), code,
}; };
} }
} }
...@@ -3709,7 +3713,7 @@ function generateCodeFrameWithSwiftStacktrace(stacktrace, { name, inputDir, outp ...@@ -3709,7 +3713,7 @@ function generateCodeFrameWithSwiftStacktrace(stacktrace, { name, inputDir, outp
sourceMapFilename, sourceMapFilename,
}); });
} }
function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourceMapFilename, }) { function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourceMapFilename, replaceTabsWithSpace, }) {
return new Promise((resolve) => { return new Promise((resolve) => {
initConsumer(sourceMapFilename).then((consumer) => { initConsumer(sourceMapFilename).then((consumer) => {
if (!consumer) { if (!consumer) {
...@@ -3722,7 +3726,7 @@ function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourc ...@@ -3722,7 +3726,7 @@ function generateCodeFrameWithStacktrace(stacktrace, regexp, { sourceRoot, sourc
message, message,
line: parseInt(line), line: parseInt(line),
column: parseInt(column), column: parseInt(column),
}, { sourceRoot }); }, { sourceRoot, replaceTabsWithSpace });
if (!m) { if (!m) {
return substring; return substring;
} }
......
...@@ -79,6 +79,7 @@ interface MessageSourceLocation { ...@@ -79,6 +79,7 @@ interface MessageSourceLocation {
} }
interface GenerateCodeFrameOptions { interface GenerateCodeFrameOptions {
sourceRoot?: string sourceRoot?: string
replaceTabsWithSpace?: boolean
} }
const isWindows = os.platform() === 'win32' const isWindows = os.platform() === 'win32'
function normalizePath(id: string): string { function normalizePath(id: string): string {
...@@ -96,8 +97,12 @@ export function generateCodeFrameSourceMapConsumer( ...@@ -96,8 +97,12 @@ export function generateCodeFrameSourceMapConsumer(
column: m.column, column: m.column,
}) })
if (res.source != null && res.line != null && res.column != null) { if (res.source != null && res.line != null && res.column != null) {
const code = consumer.sourceContentFor(res.source, true) let code = consumer.sourceContentFor(res.source, true)
if (code) { if (code) {
code = generateCodeFrame(code, { line: res.line, column: res.column })
if (options.replaceTabsWithSpace) {
code = code.replace(/\t/g, ' ')
}
return { return {
type: m.type, type: m.type,
file: options.sourceRoot file: options.sourceRoot
...@@ -111,7 +116,7 @@ export function generateCodeFrameSourceMapConsumer( ...@@ -111,7 +116,7 @@ export function generateCodeFrameSourceMapConsumer(
line: res.line, line: res.line,
column: res.column, column: res.column,
message: m.message, message: m.message,
code: generateCodeFrame(code, { line: res.line, column: res.column }), code,
} }
} }
} }
...@@ -229,9 +234,11 @@ function generateCodeFrameWithStacktrace( ...@@ -229,9 +234,11 @@ function generateCodeFrameWithStacktrace(
{ {
sourceRoot, sourceRoot,
sourceMapFilename, sourceMapFilename,
replaceTabsWithSpace,
}: { }: {
sourceRoot: string sourceRoot: string
sourceMapFilename: string sourceMapFilename: string
replaceTabsWithSpace?: boolean
} }
) { ) {
return new Promise((resolve) => { return new Promise((resolve) => {
...@@ -250,7 +257,7 @@ function generateCodeFrameWithStacktrace( ...@@ -250,7 +257,7 @@ function generateCodeFrameWithStacktrace(
line: parseInt(line), line: parseInt(line),
column: parseInt(column), column: parseInt(column),
}, },
{ sourceRoot } { sourceRoot, replaceTabsWithSpace }
) )
if (!m) { if (!m) {
return substring return substring
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册