
1 // 2 // Copyright (c) 2006, Brian Frank and Andy Frank 3 // Licensed under the Academic Free License version 3.0 4 // 5 // History: 6 // 19 Jul 06 Brian Frank Creation 7 // 8 9 ** 10 ** ParamDef models the definition of a method parameter. 11 ** 12 class ParamDef : Node, CParam 13 { 14 15 ////////////////////////////////////////////////////////////////////////// 16 // Construction 17 ////////////////////////////////////////////////////////////////////////// 18 19 new make(Location location, CType paramType := null, Str name := null, Expr def := null) 20 : super(location) 21 { 22 this.paramType = paramType 23 this.name = name 24 this.def = def 25 } 26 27 ////////////////////////////////////////////////////////////////////////// 28 // CParam 29 ////////////////////////////////////////////////////////////////////////// 30 31 override Bool hasDefault() { return def != null } 32 33 ////////////////////////////////////////////////////////////////////////// 34 // Debug 35 ////////////////////////////////////////////////////////////////////////// 36 37 override Str toStr() 38 { 39 return "$paramType $name" 40 } 41 42 override Void print(AstWriter out) 43 { 44 out.w(paramType).w(" ").w(name) 45 if (def != null) { out.w(" := "); def.print(out) } 46 } 47 48 ////////////////////////////////////////////////////////////////////////// 49 // Fields 50 ////////////////////////////////////////////////////////////////////////// 51 52 override CType paramType // type of parameter 53 override Str name // local variable name 54 Expr def // default expression 55 56 }