])
})
+ it('should warn when given a non-integer N', () => {
+ renderList(3.1, () => {})
+ expect(
+ `The v-for range expect an integer value but got 3.1.`
+ ).toHaveBeenWarned()
+ })
+
it('should render properties in an object', () => {
expect(
renderList(
import { VNodeChild } from '../vnode'
import { isArray, isString, isObject } from '@vue/shared'
+import { warn } from '../warning'
/**
* v-for string
ret[i] = renderItem(source[i], i)
}
} else if (typeof source === 'number') {
+ if (__DEV__ && !Number.isInteger(source)) {
+ warn(`The v-for range expect an integer value but got ${source}.`)
+ return []
+ }
ret = new Array(source)
for (let i = 0; i < source; i++) {
ret[i] = renderItem(i + 1, i)
expect(stack).toEqual(['node 0: 1', 'node 1: 2', 'node 2: 3'])
})
+ it('should warn when given a non-integer N', () => {
+ ssrRenderList(3.1, () => {})
+ expect(
+ `The v-for range expect an integer value but got 3.1.`
+ ).toHaveBeenWarned()
+ })
+
it('should render properties in an object', () => {
ssrRenderList({ a: 1, b: 2, c: 3 }, (item, key, index) =>
stack.push(`node ${index}/${key}: ${item}`)
import { isArray, isString, isObject } from '@vue/shared'
+import { warn } from '@vue/runtime-core'
export function ssrRenderList(
source: unknown,
renderItem(source[i], i)
}
} else if (typeof source === 'number') {
+ if (__DEV__ && !Number.isInteger(source)) {
+ warn(`The v-for range expect an integer value but got ${source}.`)
+ return
+ }
for (let i = 0; i < source; i++) {
renderItem(i + 1, i)
}