Changeset 3186

Show
Ignore:
Timestamp:
12/10/08 06:38:03 (12 months ago)
Author:
sukyoungryu
Message:

[ast refactoring] Removed optional fields of FnDecl?, DimDecl?, UnitDecl?, PropertyDecl?, TypeAlias?, Binding, LValue, and Param.

Location:
trunk/ProjectFortress
Files:
17 modified

Legend:

Unmodified
Added
Removed
  • trunk/ProjectFortress/astgen/Fortress.ast

    r3184 r3186  
    320320                       Option<WhereClause> whereClause, 
    321321                       Option<Contract> contract, 
    322                        Id unambiguousName = new Id(in_span, "FN$"+in_span.toString()), 
     322                       Id unambiguousName, 
    323323                       Option<Expr> body, 
    324                        Option<Id> implementsUnambiguousName = Option.<Id>none()) 
     324                       Option<Id> implementsUnambiguousName) 
    325325                      implements Applicable, Generic; 
    326326                /** 
     
    352352                     * e.g.) dim Length SI_unit meter meters m 
    353353                     */ 
    354                     DimDecl(Id dimId, Option<Type> derived = Option.<Type>none(), 
    355                             Option<Id> defaultId = Option.<Id>none()); 
     354                    DimDecl(Id dimId, Option<Type> derived, Option<Id> defaultId); 
    356355                    /** 
    357356                     * unit declaration 
     
    359358                     * e.g.) unit inch inches: Length 
    360359                     */ 
    361                     UnitDecl(boolean si_unit = false, 
    362                              List<Id> units = Collections.<Id>emptyList(), 
    363                              Option<Type> dimType = Option.<Type>none(), 
    364                              Option<Expr> defExpr); 
     360                    UnitDecl(boolean si_unit, List<Id> units, 
     361                             Option<Type> dimType, Option<Expr> defExpr); 
    365362                /** 
    366363                 * test declaration 
     
    376373                 * e.g.) property fIsMonotonic = FORALL (x:ZZ, y:ZZ) (x < y) -> (f(x) < f(y)) 
    377374                 */ 
    378                 PropertyDecl(Option<Id> name = Option.<Id>none(), List<Param> params, 
    379                              Expr expr); 
     375                PropertyDecl(Option<Id> name, List<Param> params, Expr expr); 
    380376                /** 
    381377                 * type alias declaration 
     
    384380                 */ 
    385381                TypeAlias(Id name, 
    386                           List<StaticParam> staticParams 
    387                               = Collections.<StaticParam>emptyList(), 
     382                          List<StaticParam> staticParams, 
    388383                          Type typeDef); 
    389384                /** 
     
    417412             * left-hand side of variable declaration or value parameter 
    418413             */ 
    419             abstract Binding(Id name, 
    420                              List<Modifier> mods = Collections.<Modifier>emptyList(), 
    421                              Option<Type> idType = Option.<Type>none()) implements Lhs; 
     414            abstract Binding(Id name, List<Modifier> mods, 
     415                             Option<Type> idType) implements Lhs; 
    422416                /** 
    423417                 * left-hand side of variable declaration 
     
    425419                 * Name must be unqualified. 
    426420                 */ 
    427                 LValue(boolean mutable = false); 
     421                LValue(boolean mutable); 
    428422                /** 
    429423                 * value parameter of functional declarations and object declarations 
     
    445439                 * It is a varargs parameter if the varargsType field is set. 
    446440                 */ 
    447                 Param(Option<Expr> defaultExpr = Option.<Expr>none(), 
    448                       Option<Type> varargsType = Option.<Type>none()); 
     441                Param(Option<Expr> defaultExpr, Option<Type> varargsType); 
    449442            /** 
    450443             * expression 
  • trunk/ProjectFortress/src/com/sun/fortress/compiler/desugarer/DesugaringVisitor.java

    r3184 r3186  
    280280        List<Param> params = new ArrayList<Param>(); 
    281281        Id param = NodeFactory.makeId(span, "param_"+name); 
    282         params.add((Param)NodeFactory.makeParam(span, new LinkedList<Modifier>(), 
    283                                                 param, ty)); 
     282        params.add((Param)NodeFactory.makeParam(param, ty)); 
    284283        Expr rhs = ExprFactory.makeVarRef(span, param, ty); 
    285284        Expr assign; 
  • trunk/ProjectFortress/src/com/sun/fortress/compiler/desugarer/ObjectExpressionVisitor.java

    r3184 r3186  
    576576                            exit.getExprType(), exit.getTarget(), var); 
    577577                        exitFnExprParams.add( 
    578                             NodeFactory.makeParam(exitSpan, 
    579                                 exitWithId, exitWithTypeOp) ); 
     578                            NodeFactory.makeParam(exitWithId, exitWithTypeOp) ); 
    580579                    } else { 
    581580                        throw new DesugarerError( exitSpan, 
     
    726725                    // FIXME: what span should I use? 
    727726                    type = var.getExprType(); 
    728                     param = NodeFactory.makeParam(var.getSpan(), 
    729                                                         var.getVarId(), type); 
     727                    param = NodeFactory.makeParam(var.getVarId(), type); 
    730728                    params.add(param); 
    731729                } 
     
    742740                if ( ! (name instanceof Id) ) 
    743741                    bug(name, "The name field of FnRef should be Id."); 
    744                 param = NodeFactory.makeParam(fn.getSpan(), 
    745                                               (Id)name, type); 
     742                param = NodeFactory.makeParam((Id)name, type); 
    746743                params.add(param); 
    747744            } 
     
    771768                Id exitFnId = NodeFactory.makeId(exitSpan, 
    772769                        MANGLE_CHAR + EXIT_FUNC_PREFIX + "_" + exitIndex); 
    773                 param = NodeFactory.makeParam(exitSpan, exitFnId, type); 
     770                param = NodeFactory.makeParam(exitFnId, type); 
    774771                params.add(param); 
    775772                Pair<Span, Id> exitKey = new Pair<Span,Id>(exitSpan, label); 
     
    801798        Id enclosingParamId = NodeFactory.makeId(paramSpan, 
    802799                MANGLE_CHAR + ENCLOSING_PREFIX + "_" + objExprNestingLevel); 
    803         param = NodeFactory.makeParam(paramSpan, 
    804                                         enclosingParamId, enclosingSelfType); 
     800        param = NodeFactory.makeParam(enclosingParamId, enclosingSelfType); 
    805801 
    806802        return param; 
  • trunk/ProjectFortress/src/com/sun/fortress/compiler/desugarer/VarRefContainer.java

    r3184 r3186  
    103103 
    104104    public Param containerTypeParam() { 
    105         return new Param( origDeclNode.getSpan(), 
    106                           containerVarId(), containerType() ); 
     105        return NodeFactory.makeParam( origDeclNode.getSpan(), 
     106                                      containerVarId(), containerType() ); 
    107107    } 
    108108 
     
    110110        List<LValue> lhs = new LinkedList<LValue>(); 
    111111        // set the field to be immutable 
    112         lhs.add( new LValue(origDeclNode.getSpan(), containerVarId(), 
    113                             containerType(), false) ); 
     112        lhs.add( NodeFactory.makeLValue(origDeclNode.getSpan(), containerVarId(), 
     113                                        containerType()) ); 
    114114        VarDecl field = new VarDecl( origDeclNode.getSpan(), 
    115115                                     lhs, Option.<Expr>some(makeCallToContainerObj()) ); 
     
    133133        List<LValue> lhs = new LinkedList<LValue>(); 
    134134        // set the field to be immutable 
    135         lhs.add( new LValue(origDeclNode.getSpan(), containerVarId(), 
    136                             containerType(), false) ); 
     135        lhs.add( NodeFactory.makeLValue(origDeclNode.getSpan(), containerVarId(), 
     136                                        containerType()) ); 
    137137        LocalVarDecl ret = ExprFactory.makeLocalVarDecl( origDeclNode.getSpan(), 
    138138                            lhs, makeCallToContainerObj(), bodyExprs ); 
     
    142142 
    143143    private Param makeVarParamFromVarRef(VarRef var, 
    144                                                Span paramSpan, 
     144                                         Span paramSpan, 
    145145                                               Option<Type> typeOp) { 
    146146        List<Modifier> mods = new LinkedList<Modifier>(); 
    147147        mods.add( new ModifierSettable() ); 
    148         Param param = new Param(paramSpan, var.getVarId(), mods, typeOp); 
     148        Param param = NodeFactory.makeParam(paramSpan, mods, var.getVarId(), typeOp); 
    149149        return param; 
    150150    } 
  • trunk/ProjectFortress/src/com/sun/fortress/compiler/disambiguator/SelfParamDisambiguator.java

    r3147 r3186  
    107107                                new_type = type_result; 
    108108 
    109                         return new Param(that.getSpan(), 
    110                                          that.getName(), 
    111                                          that.getMods(), 
    112                                          new_type, 
    113                                          that.getDefaultExpr(), 
    114                                          that.getVarargsType()); 
     109                        return NodeFactory.makeParam(that.getSpan(), 
     110                                                     that.getMods(), 
     111                                                     that.getName(), 
     112                                                     new_type, 
     113                                                     that.getDefaultExpr(), 
     114                                                     that.getVarargsType()); 
    115115                    } else 
    116116                        return that; 
  • trunk/ProjectFortress/src/com/sun/fortress/compiler/index/FieldSetterMethod.java

    r3122 r3186  
    3434import com.sun.fortress.nodes.Type; 
    3535import com.sun.fortress.nodes_util.Span; 
     36import com.sun.fortress.nodes_util.NodeFactory; 
    3637import com.sun.fortress.useful.NI; 
    3738 
     
    5859        public List<Param> parameters() { 
    5960            // return the implicit parameter 
    60             Param p = new Param(_ast.getSpan(), 
    61                                 new Id(_ast.getSpan(), "fakeParamForImplicitSetter"), 
    62                                 Collections.<Modifier>emptyList(), 
    63                                 _ast.getIdType(), 
    64                                 Option.<Expr>none()); 
     61            Param p = NodeFactory.makeParam(_ast.getSpan(), 
     62                                            Collections.<Modifier>emptyList(), 
     63                                            new Id(_ast.getSpan(), "fakeParamForImplicitSetter"), 
     64                                            _ast.getIdType()); 
    6565                return Collections.singletonList(p); 
    6666        } 
  • trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/InferenceVarInserter.java

    r3147 r3186  
    5050                if( type_result.isNone() ) { 
    5151                        Option<Type> new_type = Option.<Type>some(NodeFactory.make_InferenceVarType(that.getName().getSpan())); 
    52                         return new LValue(that.getSpan(),name_result,mods_result,new_type,that.isMutable()); 
     52                        return NodeFactory.makeLValue(that.getSpan(), name_result, 
     53                                                      mods_result, new_type, 
     54                                                      that.isMutable()); 
    5355                } 
    5456                else { 
  • trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/VarTypeEnv.java

    r2466 r3186  
    4949    private Map<Id, Variable> entries; 
    5050    private TypeEnv parent; 
    51      
     51 
    5252    VarTypeEnv(Map<Id, Variable> _entries, TypeEnv _parent) { 
    5353        entries = _entries; 
     
    6262     if (!(var instanceof Id)) { return parent.binding(var); } 
    6363     Id _var = (Id)var; 
    64       
     64 
    6565     Id no_api_var = removeApi(_var); 
    66       
     66 
    6767        if (entries.containsKey(no_api_var)) { 
    6868            Variable result = entries.get(no_api_var); 
     
    7979                Option<Type> type = typeFromParam(param); 
    8080 
    81                 return some(new BindingLookup(makeLValue( 
    82                   makeLValue(param.getName(), type), param.getMods()))); 
     81                return some(new BindingLookup(makeLValue(param.getSpan(), param.getName(), 
     82                                                         param.getMods(), type, false))); 
    8383            } 
    8484        } else { 
     
    104104             if (!(id instanceof Id)) { return parent.declarationSite(id); } 
    105105             Id _var = (Id)id; 
    106               
     106 
    107107             Id no_api_var = removeApi(_var); 
    108               
     108 
    109109             if (entries.containsKey(no_api_var)) { 
    110110                 Variable var = entries.get(no_api_var); 
     
    128128        public TypeEnv replaceAllIVars(Map<_InferenceVarType, Type> ivars) { 
    129129                Map<Id, Variable> new_entries = new HashMap<Id,Variable>(); 
    130                  
     130 
    131131                InferenceVarReplacer rep = new InferenceVarReplacer(ivars); 
    132                  
     132 
    133133                for( Map.Entry<Id, Variable> entry : this.entries.entrySet() ) { 
    134134                        Variable v = entry.getValue(); 
    135                  
     135 
    136136                        Variable new_v = v.acceptNodeUpdateVisitor(rep); 
    137137                        new_entries.put(entry.getKey(), new_v); 
    138138                } 
    139                  
     139 
    140140                return new VarTypeEnv(new_entries, parent.replaceAllIVars(ivars)); 
    141141        } 
  • trunk/ProjectFortress/src/com/sun/fortress/nodes_util/ExprFactory.java

    r3182 r3186  
    665665        Option<Expr> _rhs = Option.some(_r); 
    666666        _body.add(_body_expr); 
    667         _lhs.add(new LValue(p.getSpan(), p,false)); 
     667        _lhs.add(NodeFactory.makeLValue(p.getSpan(), p)); 
    668668        return new LocalVarDecl(FortressUtil.spanTwo(p, _r), _body, _lhs, _rhs); 
    669669    } 
     
    674674        Option<Expr> _rhs = Option.some(_r); 
    675675        _body.add(_body_expr); 
    676         _lhs.add(new LValue(sp, p,false)); 
     676        _lhs.add(NodeFactory.makeLValue(sp, p)); 
    677677        return new LocalVarDecl(sp, _body, _lhs, _rhs); 
    678678    } 
  • trunk/ProjectFortress/src/com/sun/fortress/nodes_util/NodeFactory.java

    r3185 r3186  
    317317    } 
    318318 
     319    public static DimDecl makeDimDecl(Span span, Id dim, Option<Type> derived) { 
     320        return makeDimDecl(span, dim, derived, Option.<Id>none()); 
     321    } 
     322 
     323    public static DimDecl makeDimDecl(Span span, Id dim, Option<Type> derived, 
     324                                      Option<Id> defaultId) { 
     325        return new DimDecl(span, dim, derived, defaultId); 
     326    } 
     327 
     328    public static UnitDecl makeUnitDecl(Span span, boolean si_unit, List<Id> units, 
     329                                        Option<Type> dim, Option<Expr> def) { 
     330        return new UnitDecl(span, si_unit, units, dim, def); 
     331    } 
     332 
     333    public static LValue makeLValue(Span span, Id name, Option<Type> type) { 
     334        return makeLValue(span, name, 
     335                          Collections.<Modifier>emptyList(), 
     336                          type, false); 
     337    } 
     338 
     339    public static LValue makeLValue(Span span, Id id, Type ty) { 
     340        return makeLValue(span, id, Option.<Type>some(ty)); 
     341    } 
     342 
     343    public static LValue makeLValue(Span span, Id id) { 
     344        return makeLValue(span, id, Option.<Type>none()); 
     345    } 
     346 
     347    public static LValue makeLValue(Id id) { 
     348        return makeLValue(id.getSpan(), id); 
     349    } 
     350 
     351    public static LValue makeLValue(Id name, Id type) { 
     352        return makeLValue(FortressUtil.spanTwo(name, type), 
     353                          name, 
     354                          Collections.<Modifier>emptyList(), 
     355                          Option.some((Type)makeVarType(type.getSpan(),type)), 
     356                          false); 
     357    } 
     358 
     359    public static LValue makeLValue(Id id, Type ty) { 
     360        return makeLValue(id, ty, Collections.<Modifier>emptyList()); 
     361    } 
     362 
     363    public static LValue makeLValue(Id id, Type ty, 
     364                                    List<Modifier> mods) { 
     365        return makeLValue(id.getSpan(), id, mods, Option.<Type>some(ty), 
     366                          FortressUtil.getMutable(mods)); 
     367    } 
     368 
     369    public static LValue makeLValue(String name, Type type) { 
     370        return makeLValue(type.getSpan(), makeId(name), 
     371                          Collections.<Modifier>emptyList(), Option.some(type), false); 
     372    } 
     373 
     374    public static LValue makeLValue(String name, Type type, List<Modifier> mods) { 
     375        return makeLValue(type.getSpan(), makeId(name), mods, Option.some(type), false); 
     376    } 
     377 
     378    public static LValue makeLValue(String name, String type) { 
     379        return makeLValue(name, makeVarType(type)); 
     380    } 
     381 
     382    public static LValue makeLValue(LValue lvb, List<Modifier> mods, 
     383                                    boolean mutable) { 
     384        return makeLValue(lvb.getSpan(), lvb.getName(), mods, lvb.getIdType(), mutable); 
     385    } 
     386 
     387    public static LValue makeLValue(LValue lvb, Id name) { 
     388        return makeLValue(lvb.getSpan(), name, lvb.getMods(), lvb.getIdType(), 
     389                          lvb.isMutable()); 
     390    } 
     391 
     392    public static LValue makeLValue(LValue lvb, boolean mutable) { 
     393        return makeLValue(lvb.getSpan(), lvb.getName(), lvb.getMods(), lvb.getIdType(), 
     394                          mutable); 
     395    } 
     396 
     397    public static LValue makeLValue(LValue lvb, List<Modifier> mods) { 
     398        boolean mutable = lvb.isMutable(); 
     399        for (Modifier m : mods) { 
     400            if (m instanceof ModifierVar || m instanceof ModifierSettable) 
     401                mutable = true; 
     402        } 
     403        return makeLValue(lvb.getSpan(), lvb.getName(), mods, lvb.getIdType(), mutable); 
     404    } 
     405 
     406    public static LValue makeLValue(LValue lvb, Type ty) { 
     407        return makeLValue(lvb.getSpan(), lvb.getName(), lvb.getMods(), 
     408                          Option.<Type>some(ty), lvb.isMutable()); 
     409    } 
     410 
     411    public static LValue makeLValue(LValue lvb, Type ty, 
     412                                    boolean mutable) { 
     413        return makeLValue(lvb.getSpan(), lvb.getName(), lvb.getMods(), 
     414                          Option.<Type>some(ty), mutable); 
     415    } 
     416 
     417    public static LValue makeLValue(LValue lvb, Type ty, 
     418                                    List<Modifier> mods) { 
     419        boolean mutable = lvb.isMutable(); 
     420        for (Modifier m : mods) { 
     421            if (m instanceof ModifierVar || m instanceof ModifierSettable) 
     422                mutable = true; 
     423        } 
     424        return makeLValue(lvb.getSpan(), lvb.getName(), mods, 
     425                          Option.<Type>some(ty), mutable); 
     426    } 
     427 
     428    public static LValue makeLValue(Span span, Id name, List<Modifier> mods, 
     429                                    Option<Type> type, boolean mutable) { 
     430        return new LValue(span, name, mods, type, mutable); 
     431    } 
     432 
     433    public static Param makeParam(Span span, List<Modifier> mods, Id name, 
     434                                  Type type) { 
     435        return makeParam(span, mods, name, Option.<Type>some(type)); 
     436    } 
     437 
     438    public static Param makeParam(Span span, List<Modifier> mods, Id name, 
     439                                  Option<Type> type) { 
     440        return makeParam(span, mods, name, type, 
     441                         Option.<Expr>none(), Option.<Type>none()); 
     442    } 
     443 
     444    public static Param makeParam(Id name) { 
     445        return makeParam(name, Option.<Type>none()); 
     446    } 
     447 
     448    public static Param makeParam(Id id, Type type) { 
     449        return makeParam(id.getSpan(), Collections.<Modifier>emptyList(), id, 
     450                         Option.<Type>some(type)); 
     451    } 
     452 
     453    public static Param makeParam(Id id, Option<Type> type) { 
     454        return makeParam(id.getSpan(), Collections.<Modifier>emptyList(), id, type); 
     455    } 
     456 
     457    public static Param makeParam(Span span, Id id, Option<Type> type) { 
     458        return makeParam(span, Collections.<Modifier>emptyList(), id, type); 
     459    } 
     460 
     461    public static Param makeParam(Param param, Expr expr) { 
     462        return makeParam(param.getSpan(), param.getMods(), param.getName(), 
     463                         param.getIdType(), Option.<Expr>some(expr), 
     464                         param.getVarargsType()); 
     465    } 
     466 
     467    public static Param makeParam(Param param, List<Modifier> mods) { 
     468        return makeParam(param.getSpan(), mods, param.getName(), 
     469                         param.getIdType(), param.getDefaultExpr(), 
     470                         param.getVarargsType()); 
     471    } 
     472 
     473    public static Param makeParam(Param param, Id newId) { 
     474        return makeParam(param.getSpan(), param.getMods(), newId, 
     475                         param.getIdType(), param.getDefaultExpr(), 
     476                         param.getVarargsType()); 
     477    } 
     478 
     479    public static Param makeVarargsParam(Id name, Type type) { 
     480        return makeParam(name.getSpan(), Collections.<Modifier>emptyList(), name, 
     481                         Option.<Type>none(), Option.<Expr>none(), Option.<Type>some(type)); 
     482    } 
     483 
     484    public static Param makeVarargsParam(Param param, List<Modifier> mods) { 
     485        return makeParam(param.getSpan(), mods, param.getName(), 
     486                         Option.<Type>none(), Option.<Expr>none(), 
     487                         param.getVarargsType()); 
     488    } 
     489 
     490    public static Param makeVarargsParam(Span span, List<Modifier> mods, 
     491                                         Id name, Type type) { 
     492        return makeParam(span, mods, name, 
     493                         Option.<Type>none(), Option.<Expr>none(), 
     494                         Option.<Type>some(type)); 
     495    } 
     496 
     497    public static Param makeAbsParam(Type type) { 
     498        return makeParam(type.getSpan(), Collections.<Modifier>emptyList(), 
     499                         new Id(type.getSpan(), "_"), type); 
     500    } 
     501 
     502    public static Param makeParam(Span span, List<Modifier> mods, Id name, 
     503                                  Option<Type> type, Option<Expr> expr, 
     504                                  Option<Type> varargsType) { 
     505        return new Param(span, name, mods, type, expr, varargsType); 
     506    } 
     507 
     508    /***************************************************************************/ 
     509 
    319510    /* 
    320     public static FnDecl makeFnDecl(Span span, List<Modifier> mods, 
    321                                     Id name, Option<Type> type) { 
    322         return makeFnDecl(span, mods, name, Collections.<Param>emptyList(), type); 
    323     } 
    324  
    325     public static FnDecl makeFnDecl(Span span, List<Modifier> mods, 
    326                                     Id name, List<Param> params, 
    327                                     Option<Type> type) { 
    328         return new FnDecl(span, mods, name, Collections.<StaticParam>emptyList(), 
    329                           params, type, Option.<Expr>none()); 
    330     } 
    331  
    332     public static FnDecl makeFnDecl(Span s, List<Modifier> mods, 
    333                                     IdOrOpOrAnonymousName name, 
    334                                     List<StaticParam> staticParams, 
    335                                     List<Param> params, 
    336                                     Option<Type> returnType, 
    337                                     Option<List<BaseType>> throwss, 
    338                                     Option<WhereClause> where, 
    339                                     Option<Contract> contract) { 
    340         return new FnDecl(s, mods, name, staticParams, params, returnType, 
    341                           throwss, where, contract, Option.<Expr>none(), Option.<Id>none()); 
    342     } 
    343  
    344     public static FnDecl makeFnDecl(Span span, List<Modifier> mods, 
    345                                   Id name, Option<Type> type, Expr body) { 
    346         return makeFnDecl(span, mods, name, Collections.<Param>emptyList(), type, 
    347                           Option.<Expr>some(body)); 
    348     } 
    349  
    350     public static FnDecl makeFnDecl(Span span, List<Modifier> mods, 
    351                                   Id name, Option<Type> type, Option<Expr> body) { 
    352         return makeFnDecl(span, mods, name, Collections.<Param>emptyList(), type, 
    353                           body); 
    354     } 
    355  
    356     public static FnDecl makeFnDecl(Span span, List<Modifier> mods, 
    357                                   Id name, List<Param> params, 
    358                                   Option<Type> type, Expr body) { 
    359         return new FnDecl(span, mods, name, Collections.<StaticParam>emptyList(), 
    360                           params, type, Option.<List<BaseType>>none(), 
    361                           Option.<WhereClause>none(), Option.<Contract>none(), 
    362                           Option.<Expr>some(body)); 
    363     } 
    364  
    365     public static FnDecl makeFnDecl(Span span, List<Modifier> mods, 
    366                                   Id name, List<Param> params, 
    367                                   Option<Type> type, Option<Expr> body) { 
    368         return new FnDecl(span, mods, name, Collections.<StaticParam>emptyList(), 
    369                          params, type, Option.<List<BaseType>>none(), 
    370                          Option.<WhereClause>none(), Option.<Contract>none(), 
    371                          body); 
     511    public static Param makeParam(Span span, Id name, Option<Type> type) { 
     512        return new Param(span, name, type); 
     513    } 
     514 
     515    public static Param makeParam(Span span, List<Modifier> mods, Id name, 
     516                                  Type type) { 
     517        return new Param(span, name, mods, Option.some(type), Option.<Expr>none()); 
     518    } 
     519 
     520    public static Param makeParam(Span span, List<Modifier> mods, Id name, 
     521                                  Option<Type> type) { 
     522        return new Param(span, name, mods, type, Option.<Expr>none()); 
     523    } 
     524 
     525    public static LValue makeLValue(Id name, Type type) { 
     526        return new LValue(new Span(name.getSpan(), type.getSpan()), 
     527                          name, 
     528                          Collections.<Modifier>emptyList(), 
     529                          Option.some(type), 
     530                          false); 
     531    } 
     532 
     533    public static LValue makeLValue(Id name, Option<Type> type) { 
     534        return new LValue(name.getSpan(), 
     535                          name, 
     536                          Collections.<Modifier>emptyList(), 
     537                          type, 
     538                          false); 
     539    } 
     540 
     541    public static LValue makeLValue(Param param) { 
     542        return new LValue(param.getSpan(), param.getName(), 
     543                          param.getMods(), param.getIdType(), false); 
    372544    } 
    373545    */ 
     
    413585        Indices indices = ind.unwrap(new Indices(span, Collections.<ExtentRange>emptyList())); 
    414586        return new ArrayType(span, element, indices); 
    415     } 
    416  
    417     public static DimDecl makeDimDecl(Span span, Id dim) { 
    418         return new DimDecl(span, dim); 
    419587    } 
    420588 
     
    8361004    } 
    8371005 
    838     public static LValue makeLValue(Id id) { 
    839         return new LValue(id.getSpan(), id); 
    840     } 
    841  
    842     public static LValue makeLValue(String name, String type) { 
    843         return makeLValue(name, makeVarType(type)); 
    844     } 
    845  
    846     public static LValue makeLValue(Id name, Id type) { 
    847         return new LValue(new Span(name.getSpan(), type.getSpan()), 
    848                           name, 
    849                           Collections.<Modifier>emptyList(), 
    850                           Option.some((Type)makeVarType(type.getSpan(),type)), 
    851                           false); 
    852     } 
    853  
    854     public static LValue makeLValue(Id name, Type type) { 
    855         return new LValue(new Span(name.getSpan(), type.getSpan()), 
    856                           name, 
    857                           Collections.<Modifier>emptyList(), 
    858                           Option.some(type), 
    859                           false); 
    860     } 
    861  
    862     public static LValue makeLValue(Id name, Option<Type> type) { 
    863         return new LValue(name.getSpan(), 
    864                           name, 
    865                           Collections.<Modifier>emptyList(), 
    866                           type, 
    867                           false); 
    868     } 
    869  
    870     public static LValue makeLValue(String name, Type type) { 
    871         return new LValue(type.getSpan(), makeId(name), 
    872                           Collections.<Modifier>emptyList(), Option.some(type), false); 
    873     } 
    874  
    875     public static LValue makeLValue(String name, Type type, List<Modifier> mods) { 
    876         LValue result = makeLValue(name, type); 
    877         return makeLValue(result, mods); 
    878     } 
    879  
    880     public static LValue makeLValue(LValue lvb, Id name) { 
    881         return new LValue(lvb.getSpan(), name, lvb.getMods(), lvb.getIdType(), 
    882                           lvb.isMutable()); 
    883     } 
    884  
    885     public static LValue makeLValue(LValue lvb, boolean mutable) { 
    886         return new LValue(lvb.getSpan(), lvb.getName(), lvb.getMods(), lvb.getIdType(), 
    887                           mutable); 
    888     } 
    889  
    890     public static LValue makeLValue(LValue lvb, List<Modifier> mods) { 
    891         boolean mutable = lvb.isMutable(); 
    892         for (Modifier m : mods) { 
    893             if (m instanceof ModifierVar || m instanceof ModifierSettable) 
    894                 mutable = true; 
    895         } 
    896         return new LValue(lvb.getSpan(), lvb.getName(), mods, lvb.getIdType(), mutable); 
    897     } 
    898  
    899     public static LValue makeLValue(LValue lvb, List<Modifier> mods, 
    900             boolean mutable) { 
    901         return new LValue(lvb.getSpan(), lvb.getName(), mods, lvb.getIdType(), mutable); 
    902     } 
    903  
    904     public static LValue makeLValue(LValue lvb, Type ty) { 
    905         return new LValue(lvb.getSpan(), lvb.getName(), lvb.getMods(), 
    906                           Option.some(ty), lvb.isMutable()); 
    907     } 
    908  
    909     public static LValue makeLValue(LValue lvb, Type ty, 
    910             boolean mutable) { 
    911         return new LValue(lvb.getSpan(), lvb.getName(), lvb.getMods(), 
    912                           Option.some(ty), mutable); 
    913     } 
    914  
    915     public static LValue makeLValue(LValue lvb, Type ty, 
    916             List<Modifier> mods) { 
    917         boolean mutable = lvb.isMutable(); 
    918         for (Modifier m : mods) { 
    919             if (m instanceof ModifierVar || m instanceof ModifierSettable) 
    920                 mutable = true; 
    921         } 
    922         return new LValue(lvb.getSpan(), lvb.getName(), mods, 
    923                           Option.some(ty), mutable); 
    924     } 
    925  
    926     public static LValue makeLValue(Param param) { 
    927         return new LValue(param.getSpan(), param.getName(), 
    928                           param.getMods(), param.getIdType(), false); 
    929     } 
    930  
    9311006    public static MatrixType makeMatrixType(Span span, Type element, 
    9321007                                            ExtentRange dimension) { 
     
    10501125    } 
    10511126 
    1052     public static Param makeVarargsParam(Id name, Type type) { 
    1053         return new Param(name.getSpan(), name, Collections.<Modifier>emptyList(), 
    1054                          Option.<Type>none(), Option.<Expr>none(), Option.<Type>some(type)); 
    1055     } 
    1056  
    1057     public static Param makeVarargsParam(Param param, List<Modifier> mods) { 
    1058         return new Param(param.getSpan(), param.getName(), mods, 
    1059                          Option.<Type>none(), Option.<Expr>none(), 
    1060                          param.getVarargsType()); 
    1061     } 
    1062  
    1063     public static Param makeVarargsParam(Span span, List<Modifier> mods, 
    1064                                          Id name, Type type) { 
    1065         return new Param(span, name, mods, 
    1066                          Option.<Type>none(), Option.<Expr>none(), 
    1067                          Option.<Type>some(type)); 
    1068     } 
    1069  
    1070     public static Param makeAbsParam(Type type) { 
    1071         Id id = new Id(type.getSpan(), "_"); 
    1072         return new Param(type.getSpan(), id, Collections.<Modifier>emptyList(), 
    1073                          Option.some(type), Option.<Expr>none()); 
    1074     } 
    1075  
    1076     public static Param makeParam(Span span, List<Modifier> mods, Id name, 
    1077                                   Type type) { 
    1078         return new Param(span, name, mods, Option.some(type), Option.<Expr>none()); 
    1079     } 
    1080  
    1081     public static Param makeParam(Span span, List<Modifier> mods, Id name, 
    1082                                   Option<Type> type) { 
    1083         return new Param(span, name, mods, type, Option.<Expr>none()); 
    1084     } 
    1085  
    1086     public static Param makeParam(Id id, Type type) { 
    1087         return new Param(id.getSpan(), id, Collections.<Modifier>emptyList(), 
    1088                          Option.some(type), Option.<Expr>none()); 
    1089     } 
    1090  
    1091     public static Param makeParam(Id name) { 
    1092         return new Param(name.getSpan(), name, Collections.<Modifier>emptyList(), 
    1093                          Option.<Type>none(), Option.<Expr>none()); 
    1094     } 
    1095  
    1096     public static Param makeParam(Param param, Expr expr) { 
    1097         return new Param(param.getSpan(), param.getName(), param.getMods(), 
    1098                          param.getIdType(), Option.some(expr)); 
    1099     } 
    1100  
    1101     public static Param makeParam(Param param, List<Modifier> mods) { 
    1102         return new Param(param.getSpan(), param.getName(), mods, 
    1103                          param.getIdType(), param.getDefaultExpr()); 
    1104     } 
    1105  
    1106     public static Param makeParam(Param param, Id newId) { 
    1107         return new Param(param.getSpan(), newId, param.getMods(), 
    1108                          param.getIdType(), param.getDefaultExpr()); 
    1109     } 
    1110  
    11111127    public static StaticParam makeTypeParam(String name) { 
    11121128        Span s = new Span(); 
     
    11711187                               Option.<Type>none(), false, 
    11721188                               new KindNat()); 
    1173     } 
    1174  
    1175     public static Param makeParam(Span span, Id name, Option<Type> type) { 
    1176         return new Param(span, name, type); 
    11771189    } 
    11781190 
  • trunk/ProjectFortress/src/com/sun/fortress/parser/Function.rats

    r3114 r3186  
    8181       We could do this, if we had a suitable value for bottomExpr: 
    8282       for (KeywordType k : d.getKeywords()) { 
    83            params.add(new Param(k.getSpan(), mods, k.getName(), k.getType(), bottomExpr)); 
     83           params.add(NodeFactory.makeParam(k.getSpan(), mods, 
     84                                            k.getName(), k.getType(), bottomExpr, 
     85                                            Option.<Type>none())); 
    8486       } 
    8587       */ 
  • trunk/ProjectFortress/src/com/sun/fortress/parser/LocalDecl.rats

    r3138 r3186  
    176176LValue VarMayType := a1:BindId a2:(s void:colon s NoNewlineType)? 
    177177     { if (a2 == null) 
    178            yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1); 
     178           yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1); 
    179179       else 
    180            yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1,a2); 
     180           yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1,a2); 
    181181     }; 
    182182 
     
    193193LValue VarWoType = 
    194194     a1:BindId 
    195      { yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount), a1); } 
     195     { yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount), a1); } 
    196196   / Unpasting 
    197197     { Span span = createSpan(yyStart,yyCount); 
    198        yyValue = FortressUtil.mkLValue(span, new Id(span, "_")); 
     198       yyValue = NodeFactory.makeLValue(span, new Id(span, "_")); 
    199199     }; 
    200200 
  • trunk/ProjectFortress/src/com/sun/fortress/parser/NoNewlineExpr.rats

    r3082 r3186  
    205205/* NoNewlineVarWType ::= BindId s NoNewlineIsType */ 
    206206LValue NoNewlineVarWType = a1:BindId s a2:NoNewlineIsType 
    207      { yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1,a2); }; 
     207     { yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1,a2); }; 
    208208 
    209209/* NoNewlineIsType ::= : w NoNewlineType */ 
  • trunk/ProjectFortress/src/com/sun/fortress/parser/OtherDecl.rats

    r3132 r3186  
    5151       for (Id a5Elt : a5s.list()) { ids.add(a5Elt); } 
    5252       if ( a1 instanceof Id ) { 
    53            dim = new DimDecl(span, (Id)a1, Option.wrap(a2)); 
     53           dim = NodeFactory.makeDimDecl(span, (Id)a1, Option.wrap(a2)); 
    5454           ty = new VarType(a1.getSpan(), (Id)a1); 
    5555       } else { 
    5656           log(span, a1 + " is not a valid dimension name."); 
    5757           Id id = NodeFactory.bogusId(span); 
    58            dim = new DimDecl(span, id, Option.wrap(a2)); 
     58           dim = NodeFactory.makeDimDecl(span, id, Option.wrap(a2)); 
    5959           ty = new VarType(a1.getSpan(), id); 
    6060       } 
     
    6565           ids.add(NodeFactory.bogusId(span)); 
    6666       } 
    67        UnitDecl unit = new UnitDecl(span, si_unit, ids, Option.some(ty), 
    68                                     Option.wrap(a6)); 
     67       UnitDecl unit = NodeFactory.makeUnitDecl(span, si_unit, ids, Option.some(ty), 
     68                                                Option.wrap(a6)); 
    6969       yyValue = FortressUtil.mkList(dim, unit); 
    7070     } 
     
    8686           unitId = NodeFactory.bogusId(span); 
    8787       } 
    88        dim = new DimDecl(span, dimId, Option.wrap(a2), Option.wrap(unitId)); 
     88       dim = NodeFactory.makeDimDecl(span, dimId, Option.wrap(a2), Option.wrap(unitId)); 
    8989       yyValue = FortressUtil.mkList((DimUnitDecl)dim); 
    9090     } 
     
    103103       } 
    104104       for (Id a3Elt : a3s.list()) { ids.add(a3Elt); } 
    105        UnitDecl unit = new UnitDecl(span, si_unit, 
    106                                     ids, Option.wrap(a4), Option.wrap(a5)); 
     105       UnitDecl unit = NodeFactory.makeUnitDecl(span, si_unit, ids, 
     106                                                Option.wrap(a4), Option.wrap(a5)); 
    107107       yyValue = FortressUtil.mkList((DimUnitDecl)unit); 
    108108     }; 
  • trunk/ProjectFortress/src/com/sun/fortress/parser/Variable.rats

    r3163 r3186  
    142142LValue VarMayType = a1:BindId a2:(w IsType) 
    143143     { if (a2 == null) 
    144            yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1); 
     144           yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1); 
    145145       else 
    146            yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1,a2); 
     146           yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1,a2); 
    147147     }; 
    148148 
  • trunk/ProjectFortress/src/com/sun/fortress/parser_util/FortressUtil.java

    r3184 r3186  
    490490        List<LValue> lvs = new ArrayList<LValue>(); 
    491491        for (Id id : ids) { 
    492             lvs.add(new LValue(id.getSpan(), id, mods, ty, mutable)); 
     492            lvs.add(NodeFactory.makeLValue(id.getSpan(), id, mods, ty, mutable)); 
    493493        } 
    494494        return lvs; 
     
    518518        int ind = 0; 
    519519        for (Id id : ids) { 
    520             lvs.add(new LValue(id.getSpan(), id, mods, Option.<Type>some(tys.get(ind)), 
    521                                mutable)); 
     520            lvs.add(NodeFactory.makeLValue(id.getSpan(), id, mods, 
     521                                           Option.<Type>some(tys.get(ind)), 
     522                                           mutable)); 
    522523            ind += 1; 
    523524        } 
     
    599600        return new LocalVarDecl(span, false, emptyExprs(), lvs, 
    600601                                Option.<Expr>none()); 
    601     } 
    602  
    603     public static LValue mkLValue(Span span, Id id, Type ty) { 
    604         return new LValue(span, id, emptyModifiers(), Option.<Type>some(ty), false); 
    605     } 
    606     public static LValue mkLValue(Span span, Id id) { 
    607         return new LValue(span, id, emptyModifiers(), Option.<Type>none(), false); 
    608     } 
    609     public static LValue mkLValue(Id id, Type ty, 
    610                                   List<Modifier> mods) { 
    611         return new LValue(id.getSpan(), id, mods, Option.<Type>some(ty), getMutable(mods)); 
    612     } 
    613     public static LValue mkLValue(Id id, Type ty) { 
    614         return mkLValue(id, ty, emptyModifiers()); 
    615602    } 
    616603 
  • trunk/ProjectFortress/src/com/sun/fortress/syntax_abstractions/phases/Transform.java

    r3184 r3186  
    319319                          extendSyntaxEnvironment(old, generatedId); 
    320320                        */ 
    321                         return new Param(that.getSpan(), generatedId, mods_result, type_result, defaultExpr_result); 
     321                        return NodeFactory.makeParam(that.getSpan(), mods_result, 
     322                                                     generatedId, type_result, 
     323                                                     defaultExpr_result, 
     324                                                     Option.<Type>none()); 
    322325                    } else { 
    323326                        Debug.debug( Debug.Type.SYNTAX, 2, "Varargs param id hash code " + name_result.generateHashCode() ); 
     
    326329                        Debug.debug( Debug.Type.SYNTAX, 2, "Generate new binding for " + old + " = " + generatedId ); 
    327330                        extendSyntaxEnvironment(old, generatedId); 
    328                         return new Param(that.getSpan(), generatedId, mods_result, Option.<Type>none(), Option.<Expr>none(), 
    329                                          varargsType_result); 
     331                        return NodeFactory.makeParam(that.getSpan(), mods_result, 
     332                                                     generatedId, Option.<Type>none(), Option.<Expr>none(), 
     333                                                     varargsType_result); 
    330334                    } 
    331335                } 
     
    399403                            Debug.debug( Debug.Type.SYNTAX, 2, "Generate new binding for " + old + " = " + generatedId ); 
    400404                            extendSyntaxEnvironment(old, generatedId); 
    401                             return new LValue(that.getSpan(), generatedId, mods_result, type_result); 
     405                            return NodeFactory.makeLValue(that.getSpan(), generatedId, mods_result, 
     406                                                          type_result, that.isMutable()); 
    402407                        } 
    403408                    });