public class JL5NewExt extends JL5ProcedureCallExt implements NewOps
typeArgs
Constructor and Description |
---|
JL5NewExt() |
JL5NewExt(java.util.List<TypeNode> typeArgs) |
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
constantValue(Lang lang)
Return the constant value of the expression, if any.
|
boolean |
constantValueSet(Lang lang)
Return true iff the compiler has determined whether this expression has a
constant value.
|
Node |
disambiguateOverride(Node parent,
AmbiguityRemover ar)
Disambiguate the AST.
|
ClassType |
findEnclosingClass(Context c,
ClassType ct) |
TypeNode |
findQualifiedTypeNode(AmbiguityRemover ar,
ClassType outer,
TypeNode objectType) |
Expr |
findQualifier(AmbiguityRemover ar,
ClassType ct) |
boolean |
isConstant(Lang lang)
Return whether the expression evaluates to a constant.
|
New |
node()
The node we ultimately extend.
|
void |
prettyPrint(CodeWriter w,
PrettyPrinter tr)
Pretty-print the AST using the given
CodeWriter . |
void |
printBody(CodeWriter w,
PrettyPrinter tr) |
void |
printQualifier(CodeWriter w,
PrettyPrinter tr) |
void |
printShortObjectType(CodeWriter w,
PrettyPrinter tr) |
Node |
typeCheck(TypeChecker tc)
Type check the AST.
|
void |
typeCheckFlags(TypeChecker tc) |
void |
typeCheckNested(TypeChecker tc) |
actualTypeArgs, printArgs, typeArgs, typeArgs, typeArgs, visitChildren
acceptCFG, firstChild
addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, copy, disambiguate, disambiguateEnter, dump, dump, dump, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, ext, ext, extRewrite, extRewriteEnter, init, initPred, pred, prettyPrint, prettyPrint, prettyPrint, prettyPrint, print, printBlock, printSubStmt, superLang, throwTypes, toString, typeCheckEnter, typeCheckOverride, visitChild, visitList
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
printArgs
public JL5NewExt()
public JL5NewExt(java.util.List<TypeNode> typeArgs)
public New node()
Ext
node
in interface Ext
node
in class JL5ProcedureCallExt
public Node disambiguateOverride(Node parent, AmbiguityRemover ar) throws SemanticException
NodeOps
override()
method of the
visitor. If this method returns non-null, the node's children
will not be visited automatically. Thus, the method should check
both the node this
and it's children, usually by
invoking visitChildren
with tc
or
with another visitor, returning a non-null node. OR, the method
should do nothing and simply return null
to allow
enter
, visitChildren
, and leave
to be invoked on the node.
The default implementation returns null
.
Overriding of this method is discouraged, but sometimes necessary.disambiguateOverride
in interface NodeOps
disambiguateOverride
in class Ext_c
ar
- The visitor which disambiguates.SemanticException
public TypeNode findQualifiedTypeNode(AmbiguityRemover ar, ClassType outer, TypeNode objectType) throws SemanticException
findQualifiedTypeNode
in interface NewOps
SemanticException
public Expr findQualifier(AmbiguityRemover ar, ClassType ct) throws SemanticException
findQualifier
in interface NewOps
SemanticException
public Node typeCheck(TypeChecker tc) throws SemanticException
NodeOps
leave()
method of the
visitor. The method should perform work that should be done
after visiting the children of the node. The method may return
this
or a new copy of the node which will be
installed as a child of the node's parent.typeCheck
in interface NodeOps
typeCheck
in class Ext_c
tc
- The type checking visitor.SemanticException
public void prettyPrint(CodeWriter w, PrettyPrinter tr)
NodeOps
CodeWriter
.prettyPrint
in interface NodeOps
prettyPrint
in class JL5ProcedureCallExt
w
- The code writer to which to write.tr
- The pretty printer. This is not a visitor.public ClassType findEnclosingClass(Context c, ClassType ct)
findEnclosingClass
in interface NewOps
public void typeCheckFlags(TypeChecker tc) throws SemanticException
typeCheckFlags
in interface NewOps
SemanticException
public void typeCheckNested(TypeChecker tc) throws SemanticException
typeCheckNested
in interface NewOps
SemanticException
public void printQualifier(CodeWriter w, PrettyPrinter tr)
printQualifier
in interface NewOps
public void printShortObjectType(CodeWriter w, PrettyPrinter tr)
printShortObjectType
in interface NewOps
public void printBody(CodeWriter w, PrettyPrinter tr)
public boolean constantValueSet(Lang lang)
ExprOps
isConstant()
is valid only if
constantValueSet()
is true.constantValueSet
in interface ExprOps
public boolean isConstant(Lang lang)
ExprOps
constantValueSet()
is true.isConstant
in interface ExprOps
public java.lang.Object constantValue(Lang lang)
ExprOps
isConstant()
is true.constantValue
in interface ExprOps