// 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`] = `
"2 | <template key="one"></template>
3 | <ul>
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 = `
<template>
start = 0,
end = source.length,
): 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
// that separated each line. This is important because the actual sequence is
// needed to properly take into account the full line length for offset