diff --git a/packages/compiler-core/src/index.ts b/packages/compiler-core/src/index.ts index b1304a498..723fe8c3b 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 22b283a23..93cfa0718 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