diff --git a/src/runtime/internal/keyed_each.ts b/src/runtime/internal/keyed_each.ts index a5cfaf7fb6..138dcbc4b8 100644 --- a/src/runtime/internal/keyed_each.ts +++ b/src/runtime/internal/keyed_each.ts @@ -108,12 +108,18 @@ export function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list } export function validate_each_keys(ctx, list, get_context, get_key) { - const keys = new Set(); + const keys = new Map(); for (let i = 0; i < list.length; i++) { const key = get_key(get_context(ctx, list, i)); if (keys.has(key)) { - throw new Error('Cannot have duplicate keys in a keyed each'); + let value = ''; + try { + value = `with value '${String(key)}' `; + } catch (e) { + // can't stringify + } + throw new Error(`Cannot have duplicate keys in a keyed each: Keys at index ${keys.get(key)} and ${i} ${value}are duplicates`); } - keys.add(key); + keys.set(key, i); } } diff --git a/test/runtime/samples/keyed-each-dev-unique/_config.js b/test/runtime/samples/keyed-each-dev-unique/_config.js index 81728d9c15..d8a6745e16 100644 --- a/test/runtime/samples/keyed-each-dev-unique/_config.js +++ b/test/runtime/samples/keyed-each-dev-unique/_config.js @@ -3,5 +3,5 @@ export default { dev: true }, - error: 'Cannot have duplicate keys in a keyed each' + error: 'Cannot have duplicate keys in a keyed each: Keys at index 0 and 3 with value \'1\' are duplicates' };