Changeset 3186
- Timestamp:
- 12/10/08 06:38:03 (12 months ago)
- Location:
- trunk/ProjectFortress
- Files:
-
- 17 modified
-
astgen/Fortress.ast (modified) (8 diffs)
-
src/com/sun/fortress/compiler/desugarer/DesugaringVisitor.java (modified) (1 diff)
-
src/com/sun/fortress/compiler/desugarer/ObjectExpressionVisitor.java (modified) (5 diffs)
-
src/com/sun/fortress/compiler/desugarer/VarRefContainer.java (modified) (4 diffs)
-
src/com/sun/fortress/compiler/disambiguator/SelfParamDisambiguator.java (modified) (1 diff)
-
src/com/sun/fortress/compiler/index/FieldSetterMethod.java (modified) (2 diffs)
-
src/com/sun/fortress/compiler/typechecker/InferenceVarInserter.java (modified) (1 diff)
-
src/com/sun/fortress/compiler/typechecker/VarTypeEnv.java (modified) (5 diffs)
-
src/com/sun/fortress/nodes_util/ExprFactory.java (modified) (2 diffs)
-
src/com/sun/fortress/nodes_util/NodeFactory.java (modified) (5 diffs)
-
src/com/sun/fortress/parser/Function.rats (modified) (1 diff)
-
src/com/sun/fortress/parser/LocalDecl.rats (modified) (2 diffs)
-
src/com/sun/fortress/parser/NoNewlineExpr.rats (modified) (1 diff)
-
src/com/sun/fortress/parser/OtherDecl.rats (modified) (4 diffs)
-
src/com/sun/fortress/parser/Variable.rats (modified) (1 diff)
-
src/com/sun/fortress/parser_util/FortressUtil.java (modified) (3 diffs)
-
src/com/sun/fortress/syntax_abstractions/phases/Transform.java (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ProjectFortress/astgen/Fortress.ast
r3184 r3186 320 320 Option<WhereClause> whereClause, 321 321 Option<Contract> contract, 322 Id unambiguousName = new Id(in_span, "FN$"+in_span.toString()),322 Id unambiguousName, 323 323 Option<Expr> body, 324 Option<Id> implementsUnambiguousName = Option.<Id>none())324 Option<Id> implementsUnambiguousName) 325 325 implements Applicable, Generic; 326 326 /** … … 352 352 * e.g.) dim Length SI_unit meter meters m 353 353 */ 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); 356 355 /** 357 356 * unit declaration … … 359 358 * e.g.) unit inch inches: Length 360 359 */ 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); 365 362 /** 366 363 * test declaration … … 376 373 * e.g.) property fIsMonotonic = FORALL (x:ZZ, y:ZZ) (x < y) -> (f(x) < f(y)) 377 374 */ 378 PropertyDecl(Option<Id> name = Option.<Id>none(), List<Param> params, 379 Expr expr); 375 PropertyDecl(Option<Id> name, List<Param> params, Expr expr); 380 376 /** 381 377 * type alias declaration … … 384 380 */ 385 381 TypeAlias(Id name, 386 List<StaticParam> staticParams 387 = Collections.<StaticParam>emptyList(), 382 List<StaticParam> staticParams, 388 383 Type typeDef); 389 384 /** … … 417 412 * left-hand side of variable declaration or value parameter 418 413 */ 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; 422 416 /** 423 417 * left-hand side of variable declaration … … 425 419 * Name must be unqualified. 426 420 */ 427 LValue(boolean mutable = false);421 LValue(boolean mutable); 428 422 /** 429 423 * value parameter of functional declarations and object declarations … … 445 439 * It is a varargs parameter if the varargsType field is set. 446 440 */ 447 Param(Option<Expr> defaultExpr = Option.<Expr>none(), 448 Option<Type> varargsType = Option.<Type>none()); 441 Param(Option<Expr> defaultExpr, Option<Type> varargsType); 449 442 /** 450 443 * expression -
trunk/ProjectFortress/src/com/sun/fortress/compiler/desugarer/DesugaringVisitor.java
r3184 r3186 280 280 List<Param> params = new ArrayList<Param>(); 281 281 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)); 284 283 Expr rhs = ExprFactory.makeVarRef(span, param, ty); 285 284 Expr assign; -
trunk/ProjectFortress/src/com/sun/fortress/compiler/desugarer/ObjectExpressionVisitor.java
r3184 r3186 576 576 exit.getExprType(), exit.getTarget(), var); 577 577 exitFnExprParams.add( 578 NodeFactory.makeParam(exitSpan, 579 exitWithId, exitWithTypeOp) ); 578 NodeFactory.makeParam(exitWithId, exitWithTypeOp) ); 580 579 } else { 581 580 throw new DesugarerError( exitSpan, … … 726 725 // FIXME: what span should I use? 727 726 type = var.getExprType(); 728 param = NodeFactory.makeParam(var.getSpan(), 729 var.getVarId(), type); 727 param = NodeFactory.makeParam(var.getVarId(), type); 730 728 params.add(param); 731 729 } … … 742 740 if ( ! (name instanceof Id) ) 743 741 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); 746 743 params.add(param); 747 744 } … … 771 768 Id exitFnId = NodeFactory.makeId(exitSpan, 772 769 MANGLE_CHAR + EXIT_FUNC_PREFIX + "_" + exitIndex); 773 param = NodeFactory.makeParam(exit Span, exitFnId, type);770 param = NodeFactory.makeParam(exitFnId, type); 774 771 params.add(param); 775 772 Pair<Span, Id> exitKey = new Pair<Span,Id>(exitSpan, label); … … 801 798 Id enclosingParamId = NodeFactory.makeId(paramSpan, 802 799 MANGLE_CHAR + ENCLOSING_PREFIX + "_" + objExprNestingLevel); 803 param = NodeFactory.makeParam(paramSpan, 804 enclosingParamId, enclosingSelfType); 800 param = NodeFactory.makeParam(enclosingParamId, enclosingSelfType); 805 801 806 802 return param; -
trunk/ProjectFortress/src/com/sun/fortress/compiler/desugarer/VarRefContainer.java
r3184 r3186 103 103 104 104 public Param containerTypeParam() { 105 return newParam( origDeclNode.getSpan(),106 containerVarId(), containerType() );105 return NodeFactory.makeParam( origDeclNode.getSpan(), 106 containerVarId(), containerType() ); 107 107 } 108 108 … … 110 110 List<LValue> lhs = new LinkedList<LValue>(); 111 111 // set the field to be immutable 112 lhs.add( newLValue(origDeclNode.getSpan(), containerVarId(),113 containerType(), false) );112 lhs.add( NodeFactory.makeLValue(origDeclNode.getSpan(), containerVarId(), 113 containerType()) ); 114 114 VarDecl field = new VarDecl( origDeclNode.getSpan(), 115 115 lhs, Option.<Expr>some(makeCallToContainerObj()) ); … … 133 133 List<LValue> lhs = new LinkedList<LValue>(); 134 134 // set the field to be immutable 135 lhs.add( newLValue(origDeclNode.getSpan(), containerVarId(),136 containerType(), false) );135 lhs.add( NodeFactory.makeLValue(origDeclNode.getSpan(), containerVarId(), 136 containerType()) ); 137 137 LocalVarDecl ret = ExprFactory.makeLocalVarDecl( origDeclNode.getSpan(), 138 138 lhs, makeCallToContainerObj(), bodyExprs ); … … 142 142 143 143 private Param makeVarParamFromVarRef(VarRef var, 144 Span paramSpan,144 Span paramSpan, 145 145 Option<Type> typeOp) { 146 146 List<Modifier> mods = new LinkedList<Modifier>(); 147 147 mods.add( new ModifierSettable() ); 148 Param param = new Param(paramSpan, var.getVarId(), mods, typeOp);148 Param param = NodeFactory.makeParam(paramSpan, mods, var.getVarId(), typeOp); 149 149 return param; 150 150 } -
trunk/ProjectFortress/src/com/sun/fortress/compiler/disambiguator/SelfParamDisambiguator.java
r3147 r3186 107 107 new_type = type_result; 108 108 109 return newParam(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()); 115 115 } else 116 116 return that; -
trunk/ProjectFortress/src/com/sun/fortress/compiler/index/FieldSetterMethod.java
r3122 r3186 34 34 import com.sun.fortress.nodes.Type; 35 35 import com.sun.fortress.nodes_util.Span; 36 import com.sun.fortress.nodes_util.NodeFactory; 36 37 import com.sun.fortress.useful.NI; 37 38 … … 58 59 public List<Param> parameters() { 59 60 // 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()); 65 65 return Collections.singletonList(p); 66 66 } -
trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/InferenceVarInserter.java
r3147 r3186 50 50 if( type_result.isNone() ) { 51 51 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()); 53 55 } 54 56 else { -
trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/VarTypeEnv.java
r2466 r3186 49 49 private Map<Id, Variable> entries; 50 50 private TypeEnv parent; 51 51 52 52 VarTypeEnv(Map<Id, Variable> _entries, TypeEnv _parent) { 53 53 entries = _entries; … … 62 62 if (!(var instanceof Id)) { return parent.binding(var); } 63 63 Id _var = (Id)var; 64 64 65 65 Id no_api_var = removeApi(_var); 66 66 67 67 if (entries.containsKey(no_api_var)) { 68 68 Variable result = entries.get(no_api_var); … … 79 79 Option<Type> type = typeFromParam(param); 80 80 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))); 83 83 } 84 84 } else { … … 104 104 if (!(id instanceof Id)) { return parent.declarationSite(id); } 105 105 Id _var = (Id)id; 106 106 107 107 Id no_api_var = removeApi(_var); 108 108 109 109 if (entries.containsKey(no_api_var)) { 110 110 Variable var = entries.get(no_api_var); … … 128 128 public TypeEnv replaceAllIVars(Map<_InferenceVarType, Type> ivars) { 129 129 Map<Id, Variable> new_entries = new HashMap<Id,Variable>(); 130 130 131 131 InferenceVarReplacer rep = new InferenceVarReplacer(ivars); 132 132 133 133 for( Map.Entry<Id, Variable> entry : this.entries.entrySet() ) { 134 134 Variable v = entry.getValue(); 135 135 136 136 Variable new_v = v.acceptNodeUpdateVisitor(rep); 137 137 new_entries.put(entry.getKey(), new_v); 138 138 } 139 139 140 140 return new VarTypeEnv(new_entries, parent.replaceAllIVars(ivars)); 141 141 } -
trunk/ProjectFortress/src/com/sun/fortress/nodes_util/ExprFactory.java
r3182 r3186 665 665 Option<Expr> _rhs = Option.some(_r); 666 666 _body.add(_body_expr); 667 _lhs.add( new LValue(p.getSpan(), p,false));667 _lhs.add(NodeFactory.makeLValue(p.getSpan(), p)); 668 668 return new LocalVarDecl(FortressUtil.spanTwo(p, _r), _body, _lhs, _rhs); 669 669 } … … 674 674 Option<Expr> _rhs = Option.some(_r); 675 675 _body.add(_body_expr); 676 _lhs.add( new LValue(sp, p,false));676 _lhs.add(NodeFactory.makeLValue(sp, p)); 677 677 return new LocalVarDecl(sp, _body, _lhs, _rhs); 678 678 } -
trunk/ProjectFortress/src/com/sun/fortress/nodes_util/NodeFactory.java
r3185 r3186 317 317 } 318 318 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 319 510 /* 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); 372 544 } 373 545 */ … … 413 585 Indices indices = ind.unwrap(new Indices(span, Collections.<ExtentRange>emptyList())); 414 586 return new ArrayType(span, element, indices); 415 }416 417 public static DimDecl makeDimDecl(Span span, Id dim) {418 return new DimDecl(span, dim);419 587 } 420 588 … … 836 1004 } 837 1005 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 931 1006 public static MatrixType makeMatrixType(Span span, Type element, 932 1007 ExtentRange dimension) { … … 1050 1125 } 1051 1126 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 1111 1127 public static StaticParam makeTypeParam(String name) { 1112 1128 Span s = new Span(); … … 1171 1187 Option.<Type>none(), false, 1172 1188 new KindNat()); 1173 }1174 1175 public static Param makeParam(Span span, Id name, Option<Type> type) {1176 return new Param(span, name, type);1177 1189 } 1178 1190 -
trunk/ProjectFortress/src/com/sun/fortress/parser/Function.rats
r3114 r3186 81 81 We could do this, if we had a suitable value for bottomExpr: 82 82 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())); 84 86 } 85 87 */ -
trunk/ProjectFortress/src/com/sun/fortress/parser/LocalDecl.rats
r3138 r3186 176 176 LValue VarMayType := a1:BindId a2:(s void:colon s NoNewlineType)? 177 177 { if (a2 == null) 178 yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1);178 yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1); 179 179 else 180 yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1,a2);180 yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1,a2); 181 181 }; 182 182 … … 193 193 LValue VarWoType = 194 194 a1:BindId 195 { yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount), a1); }195 { yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount), a1); } 196 196 / Unpasting 197 197 { Span span = createSpan(yyStart,yyCount); 198 yyValue = FortressUtil.mkLValue(span, new Id(span, "_"));198 yyValue = NodeFactory.makeLValue(span, new Id(span, "_")); 199 199 }; 200 200 -
trunk/ProjectFortress/src/com/sun/fortress/parser/NoNewlineExpr.rats
r3082 r3186 205 205 /* NoNewlineVarWType ::= BindId s NoNewlineIsType */ 206 206 LValue NoNewlineVarWType = a1:BindId s a2:NoNewlineIsType 207 { yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1,a2); };207 { yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1,a2); }; 208 208 209 209 /* NoNewlineIsType ::= : w NoNewlineType */ -
trunk/ProjectFortress/src/com/sun/fortress/parser/OtherDecl.rats
r3132 r3186 51 51 for (Id a5Elt : a5s.list()) { ids.add(a5Elt); } 52 52 if ( a1 instanceof Id ) { 53 dim = newDimDecl(span, (Id)a1, Option.wrap(a2));53 dim = NodeFactory.makeDimDecl(span, (Id)a1, Option.wrap(a2)); 54 54 ty = new VarType(a1.getSpan(), (Id)a1); 55 55 } else { 56 56 log(span, a1 + " is not a valid dimension name."); 57 57 Id id = NodeFactory.bogusId(span); 58 dim = newDimDecl(span, id, Option.wrap(a2));58 dim = NodeFactory.makeDimDecl(span, id, Option.wrap(a2)); 59 59 ty = new VarType(a1.getSpan(), id); 60 60 } … … 65 65 ids.add(NodeFactory.bogusId(span)); 66 66 } 67 UnitDecl unit = newUnitDecl(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)); 69 69 yyValue = FortressUtil.mkList(dim, unit); 70 70 } … … 86 86 unitId = NodeFactory.bogusId(span); 87 87 } 88 dim = newDimDecl(span, dimId, Option.wrap(a2), Option.wrap(unitId));88 dim = NodeFactory.makeDimDecl(span, dimId, Option.wrap(a2), Option.wrap(unitId)); 89 89 yyValue = FortressUtil.mkList((DimUnitDecl)dim); 90 90 } … … 103 103 } 104 104 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)); 107 107 yyValue = FortressUtil.mkList((DimUnitDecl)unit); 108 108 }; -
trunk/ProjectFortress/src/com/sun/fortress/parser/Variable.rats
r3163 r3186 142 142 LValue VarMayType = a1:BindId a2:(w IsType) 143 143 { if (a2 == null) 144 yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1);144 yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1); 145 145 else 146 yyValue = FortressUtil.mkLValue(createSpan(yyStart,yyCount),a1,a2);146 yyValue = NodeFactory.makeLValue(createSpan(yyStart,yyCount),a1,a2); 147 147 }; 148 148 -
trunk/ProjectFortress/src/com/sun/fortress/parser_util/FortressUtil.java
r3184 r3186 490 490 List<LValue> lvs = new ArrayList<LValue>(); 491 491 for (Id id : ids) { 492 lvs.add( newLValue(id.getSpan(), id, mods, ty, mutable));492 lvs.add(NodeFactory.makeLValue(id.getSpan(), id, mods, ty, mutable)); 493 493 } 494 494 return lvs; … … 518 518 int ind = 0; 519 519 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)); 522 523 ind += 1; 523 524 } … … 599 600 return new LocalVarDecl(span, false, emptyExprs(), lvs, 600 601 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());615 602 } 616 603 -
trunk/ProjectFortress/src/com/sun/fortress/syntax_abstractions/phases/Transform.java
r3184 r3186 319 319 extendSyntaxEnvironment(old, generatedId); 320 320 */ 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()); 322 325 } else { 323 326 Debug.debug( Debug.Type.SYNTAX, 2, "Varargs param id hash code " + name_result.generateHashCode() ); … … 326 329 Debug.debug( Debug.Type.SYNTAX, 2, "Generate new binding for " + old + " = " + generatedId ); 327 330 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); 330 334 } 331 335 } … … 399 403 Debug.debug( Debug.Type.SYNTAX, 2, "Generate new binding for " + old + " = " + generatedId ); 400 404 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()); 402 407 } 403 408 });

