1 16 package com.google.gwt.dev.js.ast; 17 18 21 public class JsFunction extends JsExpression implements HasName { 22 23 protected JsBlock body; 24 protected final JsParameters params = new JsParameters(); 25 protected final JsScope scope; 26 private JsName name; 27 28 31 public JsFunction(JsScope parent) { 32 this(parent, null); 33 } 34 35 38 public JsFunction(JsScope parent, JsName name) { 39 assert (parent != null); 40 this.name = name; 41 String scopeName = (name == null) ? "<anonymous>" : name.getIdent(); 42 scopeName = "function " + scopeName; 43 this.scope = new JsScope(parent, scopeName); 44 } 45 46 public JsBlock getBody() { 47 return body; 48 } 49 50 public JsName getName() { 51 return name; 52 } 53 54 public JsParameters getParameters() { 55 return params; 56 } 57 58 public JsScope getScope() { 59 return scope; 60 } 61 62 public void setBody(JsBlock body) { 63 this.body = body; 64 } 65 66 public void setName(JsName name) { 67 this.name = name; 68 } 69 70 public void traverse(JsVisitor v, JsContext ctx) { 71 if (v.visit(this, ctx)) { 72 v.acceptWithInsertRemove(params); 73 body = (JsBlock) v.accept(body); 74 } 75 v.endVisit(this, ctx); 76 } 77 } 78 | Popular Tags |