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 /test/files/run/t8253.scala | |
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 'test/files/run/t8253.scala')
-rw-r--r-- | test/files/run/t8253.scala | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/files/run/t8253.scala b/test/files/run/t8253.scala new file mode 100644 index 0000000000..c4800b4491 --- /dev/null +++ b/test/files/run/t8253.scala @@ -0,0 +1,14 @@ +object Test extends App { + import reflect.runtime.universe._ // not using the XML library in compiler tests + + def show(code: String, t: Tree) = println(s"\n$code\n$t") + + val ns1 = "ns1" + show("<sample xmlns='ns1'/>", q"<sample xmlns='ns1'/>") + show("<sample xmlns={identity(ns1)}/>", q"<sample xmlns={ns1}/>") + show("<sample xmlns:foo='ns1'/>", q"<sample xmlns:foo='ns1'/>") + show("<sample xmlns:foo={identity(ns1)}/>", q"<sample xmlns:foo={ns1}/>") + + // `identity(foo)` used to match the overly permissive match in SymbolXMLBuilder + // which was intented to more specifically match `_root_.scala.xml.Text(...)` +} |