From 498a07fcd8d922545e942b817d3fbd16ef56809b Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Thu, 16 Apr 2015 12:07:02 -0700 Subject: SI-3368 Default to coalescing for 2.11 Preserve current behavior (no PCData nodes, only Text) for 2.11. The coalescing flag is on if enabled or if source level is not 2.12 and no flag was supplied. The subtle change is that adjacent Text nodes are thereby coalesced. This happens in the presence of CData sections, but this is at the discretion of the parser anyway. Also, no PCData nodes are emitted under coalescing, even if there were no sibling text nodes. That is the correct behavior: the general idea is that coalescing mode says, I only want to deal with text. --- src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala | 7 +++---- src/compiler/scala/tools/nsc/settings/ScalaSettings.scala | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src/compiler') diff --git a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala index 99399e363f..67241ef639 100755 --- a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala @@ -126,10 +126,9 @@ abstract class SymbolicXMLBuilder(p: Parsers#Parser, preserveWS: Boolean) { def makeTextPat(txt: Tree) = Apply(_scala_xml__Text, List(txt)) def makeText1(txt: Tree) = New(_scala_xml_Text, LL(txt)) def comment(pos: Position, text: String) = atPos(pos)( Comment(const(text)) ) - def charData(pos: Position, txt: String) = atPos(pos) { - val t = if (isPattern) Apply(_scala_xml(xmlterms._PCData), List(const(txt))) - else New(_scala_xml(_PCData), LL(const(txt))) - if (coalescing) t updateAttachment TextAttache(pos, txt) else t + def charData(pos: Position, txt: String) = if (coalescing) text(pos, txt) else atPos(pos) { + if (isPattern) Apply(_scala_xml(xmlterms._PCData), List(const(txt))) + else New(_scala_xml(_PCData), LL(const(txt))) } def procInstr(pos: Position, target: String, txt: String) = diff --git a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala index f217d21c35..630276e412 100644 --- a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala +++ b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala @@ -142,7 +142,7 @@ trait ScalaSettings extends AbsScalaSettings // XML parsing options object XxmlSettings extends MultiChoiceEnumeration { val coalescing = Choice("coalescing", "Convert PCData to Text and coalesce sibling nodes") - def isCoalescing = Xxml contains coalescing + def isCoalescing = (Xxml contains coalescing) || (!isScala212 && !Xxml.isSetByUser) } val Xxml = MultiChoiceSetting( name = "-Xxml", -- cgit v1.2.3