http://gwt-code-reviews.appspot.com/184802/diff/1/2 File dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java (right):
http://gwt-code-reviews.appspot.com/184802/diff/1/2#newcode294 dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java:294: void setClinitTo(JDeclaredType newClinitTarget) { setClinitTarget sounds great. http://gwt-code-reviews.appspot.com/184802/diff/1/2#newcode299 dev/core/src/com/google/gwt/dev/jjs/ast/JDeclaredType.java:299: removeClinit(); On this code path, removeClinit() is called to remove the clinit method. On the other code path, the clinit method is left in place. Shouldn't they do the same thing? After thinking about it more, I would tend to think it's safer to remove this call to removeClinit(). Maybe some other clinit is still in the program and calls this one. However, if there's a reason to think all references to the short-circuited clinit are gone, then the other path should call removeClinit(), too. http://gwt-code-reviews.appspot.com/184802/diff/1/3 File dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java (right): http://gwt-code-reviews.appspot.com/184802/diff/1/3#newcode654 dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java:654: type.setClinitTo(target); I see now. The superclass is always done first. Perhaps say *why* the superclass is done first, in the comment at 645? http://gwt-code-reviews.appspot.com/184802/diff/1/3#newcode659 dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java:659: private JDeclaredType computeHasClinitTargetRecursive(JDeclaredType type, Good point. Sure. http://gwt-code-reviews.appspot.com/184802/show -- http://groups.google.com/group/Google-Web-Toolkit-Contributors To unsubscribe, reply using "remove me" as the subject.
