Skip to content

Scala 3 ignores preferredPrefix #39

@geny200

Description

@geny200

Hi, I found that the library behavior is different on scala 3 and scala 2: scala 3 ignores the specified preferredPrefix while in scala 2 it is used.

Code:

//> using dep dev.valentiay::phobos-core:0.26.0
//> using scala "2.13.16"

import phobos.Namespace
import phobos.derivation.semiauto.deriveElementEncoder
import phobos.encoding.{ElementEncoder, XmlEncoder}
import phobos.syntax.xmlns

object MyNamespace {
  type ns = MyNamespace.type
  implicit val ns: Namespace[ns] = Namespace.mkInstance[ns]("http://test.org/some", Some("my"))
}

final case class Foo(
  xmlns(MyNamespace) foo: String
)

object Foo {
  implicit val encoder: ElementEncoder[Foo] = deriveElementEncoder

  implicit def xmlEncoder: XmlEncoder[Foo] =
    XmlEncoder.fromElementEncoder[Foo]("MyRoot")
}

object Main extends App {
  println(XmlEncoder[Foo].encode(Foo("bar")))
}

Output for Scala 2.13.16:

<?xml version='1.0' encoding='UTF-8'?><MyRoot><my:foo xmlns:my="http://test.org/some">bar</my:foo></MyRoot>

Output for Scala 3.3.6:

<?xml version='1.0' encoding='UTF-8'?><MyRoot><ans1:foo xmlns:ans1="http://test.org/some">bar</ans1:foo></MyRoot>

Scala 3 generates random names for namespace while Scala 2 uses a preferredPrefix

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions