logo

class

compiler::ParamDef

sys::Obj
  compiler::Node
    compiler::ParamDef : compiler::CParam
  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  }