[error] -- [E058] Type Mismatch Error: Test.scala:6:8
[error] 6 | trait FooSoapBindings { this: Soap11Clients => } // error
[error] | ^
[error] |missing requirement: self type Soap11Clients & FooSoapBindings of trait FooSoapBindings does not conform to self type HttpClients
[error] |of required trait Soap11Clients
Solution
The solution is to add scalaxb.HttpClients (or scalaxb.HttpClientsAsync) to the self type of the generated SOAP bindings. Scala 2 is still happy with this change and Scala 3 is now able to compile the generated bindings.
I've tested these changes by publishing this branch locally and by using the local sbt-scalaxb 1.9.1-SNAPSHOT plugin to generate code that was then compiled with Scala 3.2.2. It compiled successfully with both scalaxbAsync := true and false.
Problem
In Scala 3 the self type must enumerate all transitive self types. That means that generated code like this is rejected by the Scala 3 compiler:
It complains with:
Solution
The solution is to add
scalaxb.HttpClients
(orscalaxb.HttpClientsAsync
) to the self type of the generated SOAP bindings. Scala 2 is still happy with this change and Scala 3 is now able to compile the generated bindings.I've tested these changes by publishing this branch locally and by using the local sbt-scalaxb 1.9.1-SNAPSHOT plugin to generate code that was then compiled with Scala 3.2.2. It compiled successfully with both
scalaxbAsync := true
andfalse
.Closes: #557