Skip to content

BasicTransformer exponential complexity #125

Closed
@note

Description

@note

I am using 1.0.6. I just pasted code from https://issues.scala-lang.org/browse/SI-4528, namely:

var i = 0
  def translate(text: String): String = {
    println(i + " -> " + text)
    i += 1

    return "!%s!".format(text)
  }

  val xmlNode = <a><b><c><h1>Hello Example</h1></c></b></a>;

  new scala.xml.transform.RuleTransformer(new scala.xml.transform.RewriteRule {
    override def transform(n: Node): Seq[Node] = n match {
      case t: Text if !t.text.trim.isEmpty => Text(translate(t.text.trim))
      case _ => n
    }
  }).transform(xmlNode)

and the output is:

0 -> Hello Example
1 -> Hello Example
.
. (lines between left empty for sake of brevity)
30 -> Hello Example
31 -> Hello Example

It may seem it was covered by #59 but either in fact it does not or some regression was introduced.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions