From: Evan You Date: Thu, 19 Dec 2019 20:42:53 +0000 (-0500) Subject: fix: codeframe marker should have min width of 1 X-Git-Tag: v3.0.0-alpha.0~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=02c6d5c4e3c3d521bf76f3ce717124a9325a4d20;p=thirdparty%2Fvuejs%2Fcore.git fix: codeframe marker should have min width of 1 --- diff --git a/packages/compiler-core/src/index.ts b/packages/compiler-core/src/index.ts index b1304a498c..723fe8c3b2 100644 --- a/packages/compiler-core/src/index.ts +++ b/packages/compiler-core/src/index.ts @@ -36,7 +36,6 @@ import { generateCodeFrame as _genCodeFrame } from '@vue/shared' const generateCodeFrame = _genCodeFrame as ( source: string, start?: number, - end?: number, - lineOffset?: number + end?: number ) => string export { generateCodeFrame } diff --git a/packages/shared/src/codeframe.ts b/packages/shared/src/codeframe.ts index 22b283a23e..93cfa0718b 100644 --- a/packages/shared/src/codeframe.ts +++ b/packages/shared/src/codeframe.ts @@ -3,8 +3,7 @@ const range: number = 2 export function generateCodeFrame( source: string, start = 0, - end = source.length, - lineOffset = 0 + end = source.length ): string { const lines = source.split(/\r?\n/) let count = 0 @@ -14,20 +13,20 @@ export function generateCodeFrame( if (count >= start) { for (let j = i - range; j <= i + range || end > count; j++) { if (j < 0 || j >= lines.length) continue - const line = j + 1 + lineOffset + const line = j + 1 res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`) const lineLength = lines[j].length if (j === i) { // push underline const pad = start - (count - lineLength) + 1 const length = Math.max( - 0, + 1, end > count ? lineLength - pad : end - start ) res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length)) } else if (j > i) { if (end > count) { - const length = Math.min(end - count, lineLength) + const length = Math.max(Math.min(end - count, lineLength), 1) res.push(` | ` + '^'.repeat(length)) } count += lineLength + 1