summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-02-08 15:43:08 +0100
committerJason Zaugg <jzaugg@gmail.com>2014-11-10 10:18:03 +1000
commit8d175b907d41323333a5613e419303f10beddc76 (patch)
tree3dff29c42d7ac22b0ef7a2cb7517bec99a94ee7c /src/compiler/scala/tools/nsc/ast
parentb431a4bd83d3bfb2b95d0426d2905b34ce1265ad (diff)
downloadscala-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-xsrc/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala3
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)
}