Why does a combinator choke when broken into multiple lines, as shown below:
Compiles (since all on one honkin big line):
protected lazy val create: Parser[LogicalPlan] =
CREATE ~> TABLE ~> opt(IF ~ NOT ~ EXISTS ^^^ { var notExists = true }) ~ ident ~ "(" ~> tableCols <~ ")" ~ (MAPPED ~> BY ~> "(" ~> ident <~ "," ~ colFamilies <~ ")") <~ opt(";") ^^ {
Does not compile:
protected lazy val create: Parser[LogicalPlan] =
CREATE ~> TABLE ~> opt(IF ~ NOT ~ EXISTS ^^^ { var notExists = true }) ~ ident ~ "(" ~> tableCols <~ ")"
~ (MAPPED ~> BY ~> "(" ~> ident <~ "," ~ colFamilies <~ ")") <~ opt(";") ^^ {
[error] /shared/hwspark/sql/hbase/src/main/scala/org/apache/spark/sql/hbase/HBaseSQLParser.scala:37: type mismatch;
[error] found : HBaseSQLParser.this.Parser[Seq[org.apache.spark.sql.catalyst.expressions.Expression]]
[error] required: HBaseSQLParser.this.Parser[org.apache.spark.sql.catalyst.plans.logical.LogicalPlan]
[error] CREATE ~> TABLE ~> opt(IF ~ NOT ~ EXISTS ^^^ { var notExists = true }) ~ ident ~ "(" ~> tableCols <~ ")"
[error]