Class ConstChecker

  extended by polyglot.visit.NodeVisitor
      extended by jif.visit.ConstChecker
All Implemented Interfaces:
java.lang.Cloneable, polyglot.util.Copy

public class ConstChecker
extends polyglot.visit.NodeVisitor

Visitor which traverses an expression AST, and determines if the expression is a constant expression. This visitor should only be used for checking the initialization expressions of static fields; it is not checking for compile-time constants. In general, we prevent static initializers from containing any references, as such a reference may cause a class to be loaded, and thus leak information about when a class is first mentioned. However, we allow literals (e.g. String literals) and array initializers (although if an element of the array initalizer is not constant, it will be ruled out.)

Constructor Summary
ConstChecker(polyglot.types.ClassType currentClass)
Method Summary
 boolean isConst()
 polyglot.ast.Node leave(polyglot.ast.Node old, polyglot.ast.Node n, polyglot.visit.NodeVisitor v)
 polyglot.ast.Node override(polyglot.ast.Node n)
Methods inherited from class polyglot.visit.NodeVisitor
begin, copy, enter, enter, finish, finish, leave, override, toString, visitEdge, visitEdgeNoOverride
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail


public ConstChecker(polyglot.types.ClassType currentClass)
Method Detail


public boolean isConst()


public polyglot.ast.Node override(polyglot.ast.Node n)
override in class polyglot.visit.NodeVisitor


public polyglot.ast.Node leave(polyglot.ast.Node old,
                               polyglot.ast.Node n,
                               polyglot.visit.NodeVisitor v)
leave in class polyglot.visit.NodeVisitor