com-lihaoyi / upickle

uPickle: a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala
https://com-lihaoyi.github.io/upickle
MIT License
707 stars 158 forks source link

Error parsing enums which include special characters #474

Closed Quafadas closed 1 year ago

Quafadas commented 1 year ago

This script in scala-cli

//> using lib "com.lihaoyi::upickle:3.0.0"

import upickle.default.*

enum Domain derives ReadWriter : 
    case Something,`reddit.com`

case class ADomain(d: Domain) derives ReadWriter

@main def checkMe = 
  val worky = """ {"d": "Something"} """
  val noWorky = """ {"d": "reddit.com"} """

  val t1 = upickle.default.read[ADomain](worky)
  println(t1)

  val t2 = upickle.default.read[ADomain](noWorky)
  println(t2)

Will generate this output;

ADomain(Something)
Exception in thread "main" upickle.core.AbortException: invalid tag for tagged object: reddit.com at index 7
        at upickle.core.Types$TaggedReader.visitString(Types.scala:157)
lihaoyi commented 1 year ago

I have a PR out to fix this. Workaround for now is to use an explicit @key annotation

enum Domain derives ReadWriter :
  case Something
  @upickle.implicits.key("reddit.com") case  `reddit.com`