CompileStatic and TypeChecked has introduced a few new AST node classes that are not behaving nicely with the rest of the AST. This is causing havoc with Groovy-Eclipse that expects a well-formed AST where source locations are correct and all AST nodes properly visit the super class as well as all of their child nodes.
Specifically, CompareIdentityExpression and CompareToNullExpression are the ones I am having the most trouble with. Here are the specific issues:
- they subclass directly from Expression, even though they are most like BinaryExpression. Existing AST visitors will not be visiting these AST nodes.
- After being created, these new AST nodes are not always having their source locations properly set.