Skip to content

useReadonlyClassProperties ignores accessor writes (typescript) #6500

@burka

Description

@burka

Environment information

class Price {
  // lint/nursery/useReadonlyClassProperties will say this should be readonly, even though it is written to
  #price: string;
  @Input()
  set some(value: string | number) {
    if (value === undefined || value === null || value === 'undefined' || value === 'null' || Number.isNaN(value)) {
      this.#price = '';
    } else {
      this.#price = '' + value;
    }
  }

Rule name

useReadonlyClassProperties

Playground link

https://biomejs.dev/playground/?lintRules=useReadonlyClassProperties&code=YwBsAGEAcwBzACAAUAByAGkAYwBlACAAewAKACAAIAAvAC8AIABsAGkAbgB0AC8AbgB1AHIAcwBlAHIAeQAvAHUAcwBlAFIAZQBhAGQAbwBuAGwAeQBDAGwAYQBzAHMAUAByAG8AcABlAHIAdABpAGUAcwAgAHcAaQBsAGwAIABzAGEAeQAgAHQAaABpAHMAIABzAGgAbwB1AGwAZAAgAGIAZQAgAHIAZQBhAGQAbwBuAGwAeQAsACAAZQB2AGUAbgAgAHQAaABvAHUAZwBoACAAaQB0ACAAaQBzACAAdwByAGkAdAB0AGUAbgAgAHQAbwAKACAAIAAjAHAAcgBpAGMAZQA6ACAAcwB0AHIAaQBuAGcAOwAKACAAIABAAEkAbgBwAHUAdAAoACkACgAgACAAcwBlAHQAIABzAG8AbQBlACgAdgBhAGwAdQBlADoAIABzAHQAcgBpAG4AZwAgAHwAIABuAHUAbQBiAGUAcgApACAAewAKACAAIAAgACAAaQBmACAAKAB2AGEAbAB1AGUAIAA9AD0APQAgAHUAbgBkAGUAZgBpAG4AZQBkACAAfAB8ACAAdgBhAGwAdQBlACAAPQA9AD0AIABuAHUAbABsACAAfAB8ACAAdgBhAGwAdQBlACAAPQA9AD0AIAAnAHUAbgBkAGUAZgBpAG4AZQBkACcAIAB8AHwAIAB2AGEAbAB1AGUAIAA9AD0APQAgACcAbgB1AGwAbAAnACAAfAB8ACAATgB1AG0AYgBlAHIALgBpAHMATgBhAE4AKAB2AGEAbAB1AGUAKQApACAAewAKACAAIAAgACAAIAAgAHQAaABpAHMALgAjAHAAcgBpAGMAZQAgAD0AIAAnACcAOwAKACAAIAAgACAAfQAgAGUAbABzAGUAIAB7AAoAIAAgACAAIAAgACAAdABoAGkAcwAuACMAcAByAGkAYwBlACAAPQAgACcAJwAgACsAIAB2AGEAbAB1AGUAOwAKACAAIAAgACAAfQAKACAAIAB9AAoAIAAgAGcAZQB0ACAAcwBvAG0AZQAoACkAOgAgAHMAdAByAGkAbgBnACAAewAKACAAIAAgACAAcgBlAHQAdQByAG4AIAB0AGgAaQBzAC4AIwBwAHIAaQBjAGUAOwAKACAAIAB9AAoAfQAKAAoAYwBvAG4AcwB0ACAAcAByAGkAYwBlACAAPQAgAG4AZQB3ACAAUAByAGkAYwBlACgAKQAKAHAAcgBpAGMAZQAuAHMAbwBtAGUAIAA9ACAAJwAxADIAMwA0ACcAOwAKAGMAbwBuAHMAbwBsAGUALgBsAG8AZwAoAHAAcgBpAGMAZQAuAHMAbwBtAGUAKQA7AAoA

Expected result

Biome does not recognize the write access via the set some(..) accessor, the value will be set readonly via a unsafe fix which breaks the code.

Code of Conduct

  • I agree to follow Biome's Code of Conduct

Metadata

Metadata

Labels

A-LinterArea: linterL-JavaScriptLanguage: JavaScript and super languagesS-Bug-confirmedStatus: report has been confirmed as a valid bug

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions