public class MethodDecl_c extends ProcedureDecl_c implements MethodDecl
Term.Instance
Modifier and Type | Field and Description |
---|---|
protected MethodInstance |
mi |
protected TypeNode |
returnType |
body, flags, formals, name, throwTypes
exceptions, reachable
Constructor and Description |
---|
MethodDecl_c(Position pos,
Flags flags,
TypeNode returnType,
Id name,
java.util.List<Formal> formals,
java.util.List<TypeNode> throwTypes,
Block body) |
MethodDecl_c(Position pos,
Flags flags,
TypeNode returnType,
Id name,
java.util.List<Formal> formals,
java.util.List<TypeNode> throwTypes,
Block body,
Ext ext) |
Modifier and Type | Method and Description |
---|---|
<T> java.util.List<T> |
acceptCFG(CFGBuilder<?> v,
java.util.List<T> succs)
Visit this term in evaluation order, calling v.edge() for each successor
in succs, if data flows on that edge.
|
Node |
buildTypes(TypeBuilder tb)
Collects classes, methods, and fields from the AST rooted at this node
and constructs type objects for these.
|
Node |
copy(NodeFactory nf)
Produce a copy of this node using the given NodeFactory.
|
Node |
disambiguate(AmbiguityRemover ar)
Remove any remaining ambiguities from the AST.
|
void |
dump(CodeWriter w)
Dump the AST node for debugging purposes.
|
Context |
enterScope(Context c)
Push a new scope upon entering this node, and add any declarations to the
context that should be in scope when visiting children of this node.
|
Node |
extRewrite(ExtensionRewriter rw)
Rewrite the AST for the compilation in this language.
|
Term |
firstChild()
Return the first direct subterm performed when evaluating this term.
|
boolean |
isDisambiguated() |
MemberInstance |
memberInstance() |
MethodInstance |
methodInstance()
The method type object.
|
MethodDecl |
methodInstance(MethodInstance mi)
Set the method's type object.
|
protected <N extends MethodDecl_c> |
methodInstance(N n,
MethodInstance mi) |
void |
overrideMethodCheck(TypeChecker tc) |
void |
prettyPrintHeader(Flags flags,
CodeWriter w,
PrettyPrinter tr)
Pretty-print the procedure's header using the given code writer.
|
ProcedureInstance |
procedureInstance()
The procedure's type object.
|
protected <N extends MethodDecl_c> |
reconstruct(N n,
TypeNode returnType,
Id name,
java.util.List<Formal> formals,
java.util.List<TypeNode> throwTypes,
Block body)
Reconstruct the method.
|
TypeNode |
returnType()
The method's return type.
|
protected <N extends MethodDecl_c> |
returnType(N n,
TypeNode returnType) |
MethodDecl |
returnType(TypeNode returnType)
Set the method's return type.
|
void |
throwsCheck(TypeChecker tc) |
java.lang.String |
toString() |
Node |
typeCheck(TypeChecker tc)
Type check the AST.
|
Node |
visitChildren(NodeVisitor v)
Visit the children of the node.
|
body, body, body, buildTypesEnter, codeBody, codeInstance, exceptionCheckEnter, flags, flags, flags, formals, formals, formals, id, id, id, name, name, prettyPrint, reconstruct, throwTypes, throwTypes, throwTypes
exceptionCheck, exceptions, exceptions, exceptions, listChild, reachable, reachable, reachable
addDecls, checkConstants, childExpectedType, copy, copy, copyIfNeeded, del, del, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, enterChildScope, error, error, error, ext, ext, ext, ext, extRewriteEnter, isTypeChecked, lang, position, position, position, prettyPrint, prettyPrint, prettyPrint, prettyPrint, print, printBlock, printSubStmt, throwTypes, translate, typeCheckEnter, typeCheckOverride, visit, visitChild, visitEdge, visitList
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
flags, flags, formals, formals, id, id, name, name, throwTypes, throwTypes
codeBody, codeInstance
exceptions, exceptions, reachable, reachable
del, del, error, error, ext, ext, ext, ext, isTypeChecked, position, position, visit, visitEdge
addDecls, buildTypesEnter, checkConstants, childExpectedType, copy, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, enterChildScope, exceptionCheck, exceptionCheckEnter, extRewriteEnter, lang, prettyPrint, prettyPrint, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheckEnter, typeCheckOverride, visitChild, visitList
protected TypeNode returnType
protected MethodInstance mi
public MethodDecl_c(Position pos, Flags flags, TypeNode returnType, Id name, java.util.List<Formal> formals, java.util.List<TypeNode> throwTypes, Block body)
public boolean isDisambiguated()
isDisambiguated
in interface Node
isDisambiguated
in class Node_c
public MemberInstance memberInstance()
memberInstance
in interface ClassMember
public TypeNode returnType()
MethodDecl
returnType
in interface MethodDecl
public MethodDecl returnType(TypeNode returnType)
MethodDecl
returnType
in interface MethodDecl
protected <N extends MethodDecl_c> N returnType(N n, TypeNode returnType)
public ProcedureInstance procedureInstance()
ProcedureDecl
procedureInstance
in interface ProcedureDecl
procedureInstance
in class ProcedureDecl_c
public MethodInstance methodInstance()
MethodDecl
methodInstance
in interface MethodDecl
public MethodDecl methodInstance(MethodInstance mi)
MethodDecl
methodInstance
in interface MethodDecl
protected <N extends MethodDecl_c> N methodInstance(N n, MethodInstance mi)
protected <N extends MethodDecl_c> N reconstruct(N n, TypeNode returnType, Id name, java.util.List<Formal> formals, java.util.List<TypeNode> throwTypes, Block body)
public Node visitChildren(NodeVisitor v)
NodeOps
visitChildren
in interface NodeOps
visitChildren
in class Node_c
v
- The visitor that will traverse/rewrite the AST.this
.public Node buildTypes(TypeBuilder tb) throws SemanticException
NodeOps
TypeSystem
.
This method is called by the 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.buildTypes
in interface NodeOps
buildTypes
in class Node_c
tb
- The visitor which adds new type objects to the
TypeSystem
.SemanticException
public Node disambiguate(AmbiguityRemover ar) 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.
The node should not assume that its children have been disambiguated.
If it depends on a child being disambiguated,
it may just return this
without doing any work.disambiguate
in interface NodeOps
disambiguate
in class ProcedureDecl_c
ar
- The visitor which disambiguates.SemanticException
public Context enterScope(Context c)
Node_c
enterScope
in interface NodeOps
enterScope
in class Node_c
c
- the current Context
Context
to be used for visiting this node.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 Node_c
tc
- The type checking visitor.SemanticException
public void throwsCheck(TypeChecker tc) throws SemanticException
SemanticException
public void overrideMethodCheck(TypeChecker tc) throws SemanticException
SemanticException
public Node extRewrite(ExtensionRewriter rw) 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.extRewrite
in interface NodeOps
extRewrite
in class Term_c
rw
- The visitor.SemanticException
public void prettyPrintHeader(Flags flags, CodeWriter w, PrettyPrinter tr)
ProcedureDeclOps
prettyPrintHeader
in interface ProcedureDeclOps
public void dump(CodeWriter w)
Node
dump
in interface Node
dump
in class ProcedureDecl_c
public Term firstChild()
TermOps
firstChild
in interface TermOps
firstChild
in class Term_c
public <T> java.util.List<T> acceptCFG(CFGBuilder<?> v, java.util.List<T> succs)
TermOps