biomejs / biome

A toolchain for web projects, aimed to provide functionalities to maintain them. Biome offers formatter and linter, usable via CLI and LSP.
https://biomejs.dev
Apache License 2.0
14.24k stars 440 forks source link

💅 lint/suspicious/noArrayIndexKey false negative in template literals #1575

Closed bc-m closed 8 months ago

bc-m commented 8 months ago

Environment information

@biomejs/biome 1.5.2

Rule name

lint/suspicious/noArrayIndexKey

Playground link

https://biomejs.dev/playground/?code=YwBvAG4AcwB0ACAAUgBlAG4AZABlAHIAQQByAHIAYQB5ACAAPQAgACgAKQAgAD0APgAgAHsACgAgACAAYwBvAG4AcwB0ACAAYQByAHIAIAA9ACAAWwAxACwAMgAsADMAXQA7AAoAIAAgAHIAZQB0AHUAcgBuACAAYQByAHIALgBmAG8AcgBFAGEAYwBoACgAKABpAHQAZQBtACwAIABpAG4AZABlAHgAKQAgAD0APgAgAHsACgAgACAAIAAgAC8ALwAgAHQAaAByAG8AdwBzACAAZQByAHIAbwByACAAYQBzACAAZQB4AHAAZQBjAHQAZQBkAAoAIAAgACAAIAByAGUAdAB1AHIAbgAgADwAZABpAHYAIABrAGUAeQA9AHsAaQBuAGQAZQB4AH0APgB7AGkAdABlAG0AfQA8AC8AZABpAHYAPgA7AAoAIAAgAH0AKQAKAH0ACgAKAGMAbwBuAHMAdAAgAFIAZQBuAGQAZQByAEEAcgByAGEAeQAyACAAPQAgACgAKQAgAD0APgAgAHsACgAgACAAYwBvAG4AcwB0ACAAYQByAHIAIAA9ACAAWwAxACwAMgAsADMAXQA7AAoAIAAgAHIAZQB0AHUAcgBuACAAYQByAHIALgBmAG8AcgBFAGEAYwBoACgAKABpAHQAZQBtACwAIABpAG4AZABlAHgAKQAgAD0APgAgAHsACgAgACAAIAAgAC8ALwAgAG4AbwAgAGUAcgByAG8AcgAgAHQAaAByAG8AdwBuACwAIABiAHUAdAAgAGUAeABwAGUAYwB0AGUAZAAgAGEAbgAgAGUAcgByAG8AcgAKACAAIAAgACAAcgBlAHQAdQByAG4AIAA8AGQAaQB2ACAAawBlAHkAPQB7AGAAdABlAHMAdAAtAGsAZQB5AC0AJAB7AGkAbgBkAGUAeAB9AGAAfQA%2BAHsAaQB0AGUAbQB9ADwALwBkAGkAdgA%2BADsACgAgACAAfQApAAoAfQA%3D

Expected result

Using an array index in a template literal key should cause an error as the ESLint rule "react/no-array-index-key": https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md

Throw a lint-error on usage array-index as key with a template literal.

Code of Conduct

ematipico commented 8 months ago

For whoever is going to work on this bug, the issue also affects strings, not only string literals:

arr.forEach((_, index) => {
    return <div key={"test" + index} />
})