[I posted this to the newsgroup a couple of days ago, but it didn't seem
to reach the mailing list, so I'm sending it again.]


Hi group,

I've run into a problem with E4X filters on namespaced elements. The
following example demonstrates the problem:

var xml = <atom:feed xmlns:atom="http://www.w3.org/2005/Atom";>
            <atom:entry>
              <atom:title>One</atom:title>
            </atom:entry>
            <atom:entry>
              <atom:title>Two</atom:title>
            </atom:entry>
           </atom:feed>;

if (1) {
  var atom = new Namespace("http://www.w3.org/2005/Atom";);
  print(xml.atom::entry.(atom::title == "One"));
}
else {
  default xml namespace = "http://www.w3.org/2005/Atom";;
  print(xml.entry.(title == "One"));
  default xml namespace = "";
}

The first part of the if () statement results in the following stack
trace when optimization is turned on (tested with rhino1_7R2-RC3.zip).
The second part works. Should I file a bug somewhere?

Exception in thread "main" java.lang.RuntimeException: Bad tree in codegen
        at
org.mozilla.javascript.optimizer.Codegen.badTree(Codegen.java:1273)
        at
org.mozilla.javascript.optimizer.BodyCodegen.visitIfJumpEqOp(Codegen.java:4429)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateExpression(Codegen.java:2589)
        at
org.mozilla.javascript.optimizer.BodyCodegen.visitDotQuery(Codegen.java:4758)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateExpression(Codegen.java:2805)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateCallArgArray(Codegen.java:3551)
        at
org.mozilla.javascript.optimizer.BodyCodegen.visitStandardCall(Codegen.java:3314)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateExpression(Codegen.java:2271)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateStatement(Codegen.java:2118)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateStatement(Codegen.java:1937)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateStatement(Codegen.java:1937)
        at
org.mozilla.javascript.optimizer.BodyCodegen.generateBodyCode(Codegen.java:1363)
        at
org.mozilla.javascript.optimizer.Codegen.generateCode(Codegen.java:327)
        at
org.mozilla.javascript.optimizer.Codegen.compileToClassFile(Codegen.java:182)
        at
org.mozilla.javascript.optimizer.Codegen.compile(Codegen.java:91)
        at org.mozilla.javascript.Context.compileImpl(Context.java:2391)
        at org.mozilla.javascript.Context.compileString(Context.java:1359)
        at org.mozilla.javascript.Context.compileString(Context.java:1348)
        at
org.mozilla.javascript.tools.shell.Main.loadScriptFromSource(Main.java:495)
        at
org.mozilla.javascript.tools.shell.Main.processFileSecure(Main.java:483)
        at
org.mozilla.javascript.tools.shell.Main.processFile(Main.java:452)
        at
org.mozilla.javascript.tools.shell.Main.processSource(Main.java:443)
        at
org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:196)
        at
org.mozilla.javascript.tools.shell.Main$IProxy.run(Main.java:117)
        at org.mozilla.javascript.Context.call(Context.java:515)
        at
org.mozilla.javascript.ContextFactory.call(ContextFactory.java:507)
        at org.mozilla.javascript.tools.shell.Main.exec(Main.java:179)
        at org.mozilla.javascript.tools.shell.Main.main(Main.java:157)

_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino

Reply via email to