【发布时间】:2014-04-14 17:04:57
【问题描述】:
我在 xmlprotocol.scala 中遇到一个编译错误,该错误是由大型 WSDL 文件中的最新 scalaxb (1.1.2) 生成的:
[info] Compiling 10 Scala sources to /aw-scalaxb-test/target/scala-2.10/classes...
[error] /aw-scalaxb-test/target/scala-2.10/src_managed/main/sbt-scalaxb/aw/xmlprotocol.scala:630: type mismatch;
[error] found : Boolean
[error] required: Option[Boolean]
[error] p2.headOption map { scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) } getOrElse { scalaxb.fromXML[Boolean](scala.xml.Text("false"), scalaxb.ElemName(node) :: stack) },
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
这是一段对应的代码(错误在第一行“p2.headOption map”):
...
(scalaxb.ElemName(None, "HistoryLastDate"))) ^^
{ case p1 ~ p2 ~ p3 ~ p4 ~ p5 ~ p6 ~ p7 ~ p8 ~ p9 ~ p10 => aw.CheckAccountRequestSequence2(p1.nilOption map { scalaxb.fromXML[Int](_, scalaxb.ElemName(node) :: stack) },
p2.headOption map { scalaxb.fromXML[Boolean](_, scalaxb.ElemName(node) :: stack) } getOrElse { scalaxb.fromXML[Boolean](scala.xml.Text("false"), scalaxb.ElemName(node) :: stack) },
p3.nilOption map { scalaxb.fromXML[String](_, scalaxb.ElemName(node) :: stack) },
...
这个错误对我来说似乎很奇怪,因为代码中有几个非常相似的结构。是不是都生成错了?
谁能告诉我这里出了什么问题?
原始 WSDL 和所有代码都在我的 github 项目中:https://github.com/alboko/aw-scalaxb-test
【问题讨论】: