mirror of https://github.com/vuejs/core.git
refactor(shared): improve handling of out-of-range start and end values in generateCodeFrame (#10883)
related: #10854
This commit is contained in:
parent
bdeac377c7
commit
80e402975b
|
@ -1,5 +1,31 @@
|
||||||
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
|
exports[`compiler: codeframe > invalid start and end 1`] = `
|
||||||
|
"1 | <div>
|
||||||
|
| ^
|
||||||
|
2 | <template key="one"></template>
|
||||||
|
3 | <ul>"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`compiler: codeframe > invalid start and end 2`] = `
|
||||||
|
"1 | <div>
|
||||||
|
| ^^^^^
|
||||||
|
2 | <template key="one"></template>
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
3 | <ul>
|
||||||
|
| ^^^^^^
|
||||||
|
4 | <li v-for="foobar">hi</li>
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
5 | </ul>
|
||||||
|
| ^^^^^^^
|
||||||
|
6 | <template key="two"></template>
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
7 | </div>
|
||||||
|
| ^^^^^^"
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`compiler: codeframe > invalid start and end 3`] = `""`;
|
||||||
|
|
||||||
exports[`compiler: codeframe > line in middle 1`] = `
|
exports[`compiler: codeframe > line in middle 1`] = `
|
||||||
"2 | <template key="one"></template>
|
"2 | <template key="one"></template>
|
||||||
3 | <ul>
|
3 | <ul>
|
||||||
|
|
|
@ -44,6 +44,12 @@ attr
|
||||||
expect(generateCodeFrame(source, attrStart, attrEnd)).toMatchSnapshot()
|
expect(generateCodeFrame(source, attrStart, attrEnd)).toMatchSnapshot()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('invalid start and end', () => {
|
||||||
|
expect(generateCodeFrame(source, -Infinity, 0)).toMatchSnapshot()
|
||||||
|
expect(generateCodeFrame(source, 0, Infinity)).toMatchSnapshot()
|
||||||
|
expect(generateCodeFrame(source, Infinity, 0)).toMatchSnapshot()
|
||||||
|
})
|
||||||
|
|
||||||
{
|
{
|
||||||
const source = `
|
const source = `
|
||||||
<template>
|
<template>
|
||||||
|
|
|
@ -5,6 +5,12 @@ export function generateCodeFrame(
|
||||||
start = 0,
|
start = 0,
|
||||||
end = source.length,
|
end = source.length,
|
||||||
): string {
|
): string {
|
||||||
|
// Ensure start and end are within the source length
|
||||||
|
start = Math.max(0, Math.min(start, source.length))
|
||||||
|
end = Math.max(0, Math.min(end, source.length))
|
||||||
|
|
||||||
|
if (start > end) return ''
|
||||||
|
|
||||||
// Split the content into individual lines but capture the newline sequence
|
// Split the content into individual lines but capture the newline sequence
|
||||||
// that separated each line. This is important because the actual sequence is
|
// that separated each line. This is important because the actual sequence is
|
||||||
// needed to properly take into account the full line length for offset
|
// needed to properly take into account the full line length for offset
|
||||||
|
|
Loading…
Reference in New Issue