bug icon indicating copy to clipboard operation
bug copied to clipboard

quickfixes don't include escapes when needed

Open coreywoodfield opened this issue 1 year ago • 4 comments

Reproduction steps

Scala version: 2.13.12

In Test.scala:

trait Trait {
  def foo: Any
}
class Test extends Trait{
  case object `val`

  override def foo = `val`
}

When you run scalac -quickfix:any -Xsource:3 Test.scala, the file gets updated to

trait Trait {
  def foo: Any
}
class Test extends Trait{
  case object `val`

  override def foo: Test.this.val.type = `val`
}

which does not compile (the val in the type should be surrounded with backticks)

Problem

Quickfixes should escape keywords as needed

coreywoodfield avatar Feb 06 '24 22:02 coreywoodfield

Printing with backticks would solve related tickets in REPL and autocomplete.

som-snytt avatar Feb 06 '24 23:02 som-snytt

attn @lrytz

SethTisue avatar Feb 07 '24 01:02 SethTisue

We could special case keywords (80 / 20), that idea is in tree printers https://github.com/scala/scala/blob/v2.13.12/src/reflect/scala/reflect/internal/Printers.scala#L34.

Alternatively sprinkle the BackquotedIdentifierAttachment attachement more widely. @som-snytt wdyt?

Either way, I don't see this as a blocker for 2.13.13.

lrytz avatar Feb 09 '24 10:02 lrytz

WIP: https://github.com/scala/scala/compare/2.13.x...lrytz:scala:t12942?expand=1

lrytz avatar Feb 09 '24 10:02 lrytz