diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2014-02-08 15:43:08 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2014-11-10 10:18:03 +1000 |
commit | 8d175b907d41323333a5613e419303f10beddc76 (patch) | |
tree | 3dff29c42d7ac22b0ef7a2cb7517bec99a94ee7c /src/compiler/scala/tools/nsc/ast | |
parent | b431a4bd83d3bfb2b95d0426d2905b34ce1265ad (diff) | |
download | scala-8d175b907d41323333a5613e419303f10beddc76.tar.gz scala-8d175b907d41323333a5613e419303f10beddc76.tar.bz2 scala-8d175b907d41323333a5613e419303f10beddc76.zip |
SI-8253 Fix incorrect parsing of <elem xmlns={f("a")}/>
The spliced application was placed in the `attrMap` in
`SymbolicXMLBuilder` and later incorrectly matched by a pattern
intended only to match:
xml.Text(s)
That attribute value is generated by parsing:
<elem xmlns='a'/>
So the net effect was that the two fragments of XML were identical!
This commit sharpens up the match to really look for a syntactic
`_root_.scala.xml.Text("...")`.
The test just prints the parse trees of a variety of cases, as we
we should not test the modularized XML library in scala/scala.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast')
-rwxr-xr-x | src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala index 1abc0c860c..8cd915bf22 100755 --- a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala @@ -184,7 +184,8 @@ abstract class SymbolicXMLBuilder(p: Parsers#Parser, preserveWS: Boolean) { ) val uri1 = attrMap(z) match { - case Apply(_, List(uri @ Literal(Constant(_)))) => mkAssign(uri) + case Apply(Select(New(Select(Select(Select(Ident(nme.ROOTPKG), nme.scala_), nme.xml), tpnme.Text)), nme.CONSTRUCTOR), List(uri @ Literal(Constant(_)))) => + mkAssign(uri) case Select(_, nme.Nil) => mkAssign(const(null)) // allow for xmlns="" -- bug #1626 case x => mkAssign(x) } |