Skip to content

supplementary unicode characters from Ll and Lu categories are not parsed as identifier together with _ #12485

Closed
scala/scala
#9805
@unkarjedy

Description

@unkarjedy

Scala 2.13.7

According to the spec https://www.scala-lang.org/files/archive/spec/2.13/13-syntax-summary.html
all these should be parsed (except commented OK compiler error).

Scala 2.13.7 compiler produces errors where I placed the comments.

//all ok
class A0 {
  val  = 1 // category: So other
  val  = 1 // category: Sm math
  val 𝓅 = 1 // category: Ll math (suppl)
  val 𐐀 = 1 // category: Lu (suppl)

  val ⚕⚕⚕ = 1
  val ∀∀∀ = 1
  val 𝓅𝓅𝓅 = 1
  val 𐐀𐐀𐐀 = 1
}

class A1 {
  val a_⚕ = 1
  val a_∀ = 1

  // FALSE compiler error
  // lower `a` + lower `_` + suppl upper/lower letter from cat `Ll | Lu'
  val a_𝓅 = 1
  val a_𐐀 = 1
}

class A2 {
  // OK compiler error
  // lower `_` + op  `⚕ | ∀` should be separated with an extra `_`
  //val _⚕ = 1
  //val _∀ = 1

  // FALSE compiler error
  // lower `_` + suppl upper/lower letter from cat `Ll | Lu'
  val _𝓅 = 1
  val _𐐀 = 1
}

class A3 {
  //OK
  val __⚕ = 1
  val __∀ = 1

  // FALSE compiler error
  // lower `_` + lower `_` + suppl upper/lower letter from cat `Ll | Lu'
  val __𝓅 = 1
  val __𐐀 = 1
}

All false compiler errros are OK Java identifiers:

//java compiles just fine
class MyJava {
    public void 𝓅() {}
    public void 𐐀() {}

    public void 𝓅𝓅𝓅() {}
    public void 𐐀𐐀𐐀() {}

    public void a_𝓅() {}
    public void a_𐐀() {}

    public void _𝓅() {}
    public void _𐐀() {}

    public void __𝓅() {}
    public void __𐐀() {}
}

relates to:
#12482
#1406
scala/scala#9687

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions