"Cache all" gives failing behavior of ExtendJ

Create issue
Issue #212 wontfix
Görel Hedin created an issue

Emma has compiled a program with JastAddJ, generated using the cache all flag on jastadd2.jar. This caused the compilation to give erroneous behavior. I don't remember which program it was. Probably Antlr, JUnt, Lucene, PMD, or Chart.

Comments (3)

  1. Görel Hedin reporter

    Emma says all the programs had some problem with anonymous classes. Try with junit 3.8.1 which is the smallest example program.

  2. Jesper Öqvist

    That the "cache all" option does not work with ExtendJ is not surprising since ExtendJ has circular attributes with non-circular intermediate attributes. This can not be "fixed" until inherited attributes are possible to declare as circular.

    The issue does not need to be fixed, though. All attributes in a circular attribute evaluation do not need to be declared circular: only a single attribute on every possible circular evaluation chain needs to be declared circular. I know this goes against the common practices for JastAdd coding, but in ExtendJ it gives a big benefit in allowing some attributes to appear in a circular configuration and outside a circular configuration and not always incur a fixed-point evaluation.

  3. Log in to comment