Changeset 3198
- Timestamp:
- 12/11/08 15:16:18 (12 months ago)
- Location:
- trunk/ProjectFortress
- Files:
-
- 9 modified
-
astgen/Fortress.ast (modified) (5 diffs)
-
src/com/sun/fortress/compiler/disambiguator/ExprDisambiguator.java (modified) (1 diff)
-
src/com/sun/fortress/compiler/typechecker/TypeChecker.java (modified) (3 diffs)
-
src/com/sun/fortress/interpreter/rewrite/DesugarerVisitor.java (modified) (1 diff)
-
src/com/sun/fortress/nodes_util/ExprFactory.java (modified) (12 diffs)
-
src/com/sun/fortress/parser/DelimitedExpr.rats (modified) (3 diffs)
-
src/com/sun/fortress/parser/Expression.rats (modified) (4 diffs)
-
src/com/sun/fortress/parser/LocalDecl.rats (modified) (3 diffs)
-
src/com/sun/fortress/parser_util/FortressUtil.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ProjectFortress/astgen/Fortress.ast
r3193 r3198 642 642 * comprehension or accumulator 643 643 */ 644 abstract BigOpApp(List<StaticArg> staticArgs 645 = Collections.<StaticArg>emptyList()); 644 abstract BigOpApp(List<StaticArg> staticArgs); 646 645 /** 647 646 * summation and other reduction expression … … 674 673 * Targets must be unqualified. 675 674 */ 676 Exit(Option<Id> target = Option.<Id>none(), 677 Option<Expr> returnExpr = Option.<Expr>none()); 675 Exit(Option<Id> target, Option<Expr> returnExpr); 678 676 /** 679 677 * spawn expression … … 700 698 * e.g.) fn x => x + 2 701 699 */ 702 FnExpr(IdOrOpOrAnonymousName name = new AnonymousFnName(in_span), 703 List<StaticParam> staticParams 704 = Collections.<StaticParam>emptyList(), 705 List<Param> params, 706 Option<Type> returnType 707 = Option.<Type>none(), 708 Option<WhereClause> whereClause 709 = Option.<WhereClause>none(), 710 Option<List<BaseType>> throwsClause 711 = Option.<List<BaseType>>none(), 712 Expr body) 700 FnExpr(IdOrOpOrAnonymousName name, List<StaticParam> staticParams, 701 List<Param> params, Option<Type> returnType, 702 Option<WhereClause> whereClause, 703 Option<List<BaseType>> throwsClause, Expr body) 713 704 implements Applicable; 714 705 /** … … 743 734 * e.g.) localVar x = 3 744 735 */ 745 LocalVarDecl(List<LValue> lhs, 746 Option<Expr> rhs = Option.<Expr>none()); 736 LocalVarDecl(List<LValue> lhs, Option<Expr> rhs); 747 737 /** 748 738 * expression that is simple or using operators … … 755 745 * e.g.) a[i] 756 746 */ 757 SubscriptExpr(Expr obj, List<Expr> subs, 758 Option<Op> op = Option.<Op>none(), 759 List<StaticArg> staticArgs 760 = Collections.<StaticArg>emptyList()) 761 implements Lhs; 747 SubscriptExpr(Expr obj, List<Expr> subs, Option<Op> op, 748 List<StaticArg> staticArgs) implements Lhs; 762 749 /** 763 750 * primary expression -
trunk/ProjectFortress/src/com/sun/fortress/compiler/disambiguator/ExprDisambiguator.java
r3197 r3198 1171 1171 error("Exit occurs outside of a label", that); 1172 1172 } 1173 Exit newExit = new Exit(that.getSpan(), that.isParenthesized(), exprType_result, target, with); 1173 Exit newExit = ExprFactory.makeExit(that.getSpan(), that.isParenthesized(), 1174 exprType_result, target, with); 1174 1175 if (newExit.equals(that)) { 1175 1176 return that; -
trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/TypeChecker.java
r3193 r3198 2196 2196 } 2197 2197 2198 Exit new_node = newExit(that.getSpan(),2198 Exit new_node = ExprFactory.makeExit(that.getSpan(), 2199 2199 that.isParenthesized(), 2200 2200 Option.<Type>some(Types.BOTTOM), … … 2441 2441 ArrowType arr = NodeFactory.makeArrowType(FortressUtil.spanTwo(domain, return_type), 2442 2442 domain, return_type); 2443 FnExpr new_node = newFnExpr(that.getSpan(),2443 FnExpr new_node = ExprFactory.makeFnExpr(that.getSpan(), 2444 2444 that.isParenthesized(), 2445 that.getExprType(), 2445 2446 that.getName(), 2446 2447 that.getStaticParams(), … … 3000 3001 body_results.get(body_results.size()-1).type(); 3001 3002 3002 LocalVarDecl new_node = newLocalVarDecl(that.getSpan(),3003 LocalVarDecl new_node = ExprFactory.makeLocalVarDecl(that.getSpan(), 3003 3004 that.isParenthesized(), 3004 3005 body_type, -
trunk/ProjectFortress/src/com/sun/fortress/interpreter/rewrite/DesugarerVisitor.java
r3192 r3198 1123 1123 1124 1124 List<Param> params = Collections.emptyList(); 1125 FnExpr fnExpr = newFnExpr(sp, params, (Expr) rewrittenExpr);1125 FnExpr fnExpr = ExprFactory.makeFnExpr(sp, params, (Expr) rewrittenExpr); 1126 1126 1127 1127 return visitNode(ExprFactory.makeTightJuxt(s.getSpan(), fn, fnExpr)); -
trunk/ProjectFortress/src/com/sun/fortress/nodes_util/ExprFactory.java
r3193 r3198 548 548 } 549 549 550 public static Expr makeSubscripting(Span span, 551 String left, String right, 552 Expr base, List<Expr> args, 553 List<StaticArg> sargs) { 554 return makeSubscripting(span, base, left, right, args, sargs); 555 } 556 557 public static Expr makeSubscripting(Span span, Expr base, String open, 558 String close, List<Expr> args, 559 List<StaticArg> sargs) { 560 Op op = NodeFactory.makeEnclosing(span, open, close); 561 List<Expr> es; 562 if (args == null) es = FortressUtil.emptyExprs(); 563 else es = args; 564 return makeSubscriptExpr(span, base, es, Option.<Op>some(op), sargs); 565 } 566 567 public static SubscriptExpr makeSubscriptExpr(Span span, Expr obj, 568 List<Expr> subs) { 569 return makeSubscriptExpr(span, obj, subs, Option.<Op>none()); 570 } 571 572 public static SubscriptExpr makeSubscriptExpr(Span span, Expr obj, 573 List<Expr> subs, 574 Option<Op> op) { 575 return makeSubscriptExpr(span, obj, subs, op, 576 Collections.<StaticArg>emptyList()); 577 } 578 579 public static SubscriptExpr makeSubscriptExpr(Span span, Expr obj, 580 List<Expr> subs, 581 Option<Op> op, 582 List<StaticArg> sargs) { 583 return makeSubscriptExpr(span, false, Option.<Type>none(), obj, 584 Useful.immutableTrimmedList(subs), op, sargs); 585 } 586 587 public static SubscriptExpr makeSubscriptExpr(Span span, 588 boolean parenthesized, 589 Option<Type> exprType, 590 Expr obj, List<Expr> subs, 591 Option<Op> op, 592 List<StaticArg> staticArgs) { 593 return new SubscriptExpr(span, parenthesized, exprType, obj, subs, op, 594 staticArgs); 595 } 596 597 public static LocalVarDecl makeLocalVarDecl(Id p, Expr _r, Expr _body_expr) { 598 List<Expr> _body = new ArrayList<Expr>(1); 599 List<LValue> _lhs = new ArrayList<LValue>(1); 600 Option<Expr> _rhs = Option.some(_r); 601 _body.add(_body_expr); 602 _lhs.add(NodeFactory.makeLValue(p.getSpan(), p)); 603 return makeLocalVarDecl(FortressUtil.spanTwo(p, _r), _body, _lhs, _rhs); 604 } 605 606 public static LocalVarDecl makeLocalVarDecl(Span sp, Id p, Expr _r, Expr _body_expr) { 607 List<Expr> _body = new ArrayList<Expr>(1); 608 List<LValue> _lhs = new ArrayList<LValue>(1); 609 Option<Expr> _rhs = Option.some(_r); 610 _body.add(_body_expr); 611 _lhs.add(NodeFactory.makeLValue(sp, p)); 612 return makeLocalVarDecl(sp, _body, _lhs, _rhs); 613 } 614 615 public static LocalVarDecl makeLocalVarDecl(Span sp, List<LValue> lhs, Expr _r, Expr _body_expr) { 616 List<Expr> _body = new ArrayList<Expr>(1); 617 Option<Expr> _rhs = Option.some(_r); 618 _body.add(_body_expr); 619 return makeLocalVarDecl(sp, _body, lhs, _rhs); 620 } 621 622 public static LocalVarDecl makeLocalVarDecl(Span span, List<LValue> lvs, 623 Expr expr) { 624 return makeLocalVarDecl(span, lvs, Option.<Expr>some(expr)); 625 } 626 627 public static LocalVarDecl makeLocalVarDecl(Span span, List<LValue> lvs) { 628 return makeLocalVarDecl(span, lvs, Option.<Expr>none()); 629 } 630 631 public static LocalVarDecl makeLocalVarDecl(Span span, List<LValue> lvs, 632 Option<Expr> expr) { 633 return makeLocalVarDecl(span, Collections.<Expr>emptyList(), lvs, expr); 634 } 635 636 public static LocalVarDecl makeLocalVarDecl(Span sp, List<LValue> lhs, 637 Expr _r, List<Expr> _body) { 638 Option<Expr> _rhs = Option.some(_r); 639 return makeLocalVarDecl(sp, _body, lhs, _rhs); 640 } 641 642 public static LocalVarDecl makeLocalVarDecl(Span span, 643 List<Expr> body, 644 List<LValue> lhs, 645 Option<Expr> rhs) { 646 return makeLocalVarDecl(span, false, Option.<Type>none(), body, lhs, rhs); 647 } 648 649 public static LocalVarDecl makeLocalVarDecl(Span span, 650 boolean parenthesized, 651 Option<Type> exprType, 652 List<Expr> body, 653 List<LValue> lhs, 654 Option<Expr> rhs) { 655 return new LocalVarDecl(span, parenthesized, exprType, body, lhs, rhs); 656 } 657 658 public static FnExpr makeFnExpr(Span span, 659 List<Param> params, 660 Expr body) { 661 return makeFnExpr(span, params, Option.<Type>none(), 662 Option.<List<BaseType>>none(), body); 663 } 664 665 public static FnExpr makeFnExpr(Span span, List<Param> params, 666 Option<Type> returnType, Expr body) { 667 return makeFnExpr(span, params, returnType, 668 Option.<List<BaseType>>none(), body); 669 } 670 671 public static FnExpr makeFnExpr(Span span, List<Param> params, 672 Option<Type> returnType, 673 Option<List<BaseType>> throwsClause, 674 Expr body) { 675 return makeFnExpr(span, false, Option.<Type>none(), 676 new AnonymousFnName(span), 677 Collections.<StaticParam>emptyList(), params, 678 returnType, Option.<WhereClause>none(), 679 throwsClause, body); 680 } 681 682 public static FnExpr makeFnExpr(Span span, 683 boolean parenthesized, 684 Option<Type> exprType, 685 IdOrOpOrAnonymousName name, 686 List<StaticParam> staticParams, 687 List<Param> params, 688 Option<Type> returnType, 689 Option<WhereClause> whereClause, 690 Option<List<BaseType>> throwsClause, 691 Expr body) { 692 return new FnExpr(span, parenthesized, exprType, name, staticParams, 693 params, returnType, whereClause, throwsClause, body); 694 } 695 696 public static Exit makeExit(Span span, 697 Option<Type> typeOp, 698 Option<Id> targetOp, 699 Expr retExpr) { 700 return makeExit(span, false, typeOp, targetOp, Option.<Expr>some(retExpr)); 701 } 702 703 public static Exit makeExit(Span span, 704 Option<Type> typeOp, 705 Option<Id> targetOp, 706 Option<Expr> retExpr) { 707 return makeExit(span, false, typeOp, targetOp, retExpr); 708 } 709 710 public static Exit makeExit(Span span, 711 boolean parenthesized, 712 Option<Type> typeOp, 713 Option<Id> targetOp, 714 Option<Expr> retExpr) { 715 return new Exit(span, parenthesized, typeOp, targetOp, retExpr); 716 } 717 718 public static ArrayComprehension makeArrayComprehension(Span span, 719 List<StaticArg> staticArgs, 720 List<ArrayComprehensionClause> clauses) { 721 return makeArrayComprehension(span, false, Option.<Type>none(), 722 staticArgs, clauses); 723 } 724 725 public static ArrayComprehension makeArrayComprehension(Span span, 726 boolean parenthesized, 727 Option<Type> exprType, 728 List<StaticArg> staticArgs, 729 List<ArrayComprehensionClause> clauses) { 730 return new ArrayComprehension(span, parenthesized, exprType, staticArgs, clauses); 731 } 732 733 public static Accumulator makeAccumulator(Span span, 734 List<StaticArg> staticArgs, 735 Op accOp, 736 List<GeneratorClause> gens, 737 Expr body) { 738 return makeAccumulator(span, false, Option.<Type>none(), staticArgs, 739 accOp, gens, body); 740 } 741 742 public static Accumulator makeAccumulator(Span span, 743 boolean parenthesized, 744 Option<Type> exprType, 745 List<StaticArg> staticArgs, 746 Op accOp, 747 List<GeneratorClause> gens, 748 Expr body) { 749 return new Accumulator(span, parenthesized, exprType, staticArgs, 750 accOp, gens, body); 751 } 752 550 753 /***************************************************************************************/ 551 552 public static Exit makeExit(Span span, Option<Type> typeOp, Option<Id> targetOp, Expr retExpr) {553 return new Exit(span, typeOp, targetOp, Option.<Expr>some(retExpr));554 }555 754 556 755 public static FloatLiteralExpr makeFloatLiteralExpr(Span span, String s) { … … 650 849 } 651 850 652 /** Alternatively, you can invoke the FnExpr constructor with only these parameters */653 public static FnExpr makeFnExpr(Span span, List<Param> params, Expr body) {654 return makeFnExpr(span, params, Option.<Type>none(),655 Option.<List<BaseType>>none(), body);656 }657 658 public static FnExpr makeFnExpr(Span span, List<Param> params,659 Option<Type> returnType, Expr body) {660 return new FnExpr(span, params, returnType, body);661 }662 663 public static FnExpr makeFnExpr(Span span, List<Param> params,664 Option<Type> returnType,665 Option<List<BaseType>> throwsClause,666 Expr body) {667 return new FnExpr(span, false, new AnonymousFnName(span),668 Collections.<StaticParam>emptyList(), params,669 returnType, Option.<WhereClause>none(),670 throwsClause, body);671 }672 673 674 851 public static LetExpr makeLetExpr(final LetExpr let_expr, final List<Expr> body) { 675 852 return let_expr.accept(new NodeAbstractVisitor<LetExpr>() { … … 678 855 } 679 856 public LetExpr forLocalVarDecl(LocalVarDecl expr) { 680 return new LocalVarDecl(expr.getSpan(), false, body,681 expr.getLhs(), expr.getRhs());857 return makeLocalVarDecl(expr.getSpan(), false, Option.<Type>none(), 858 body, expr.getLhs(), expr.getRhs()); 682 859 } 683 860 }); … … 724 901 public static StringLiteralExpr makeStringLiteralExpr(Span span, String s) { 725 902 return new StringLiteralExpr(span, s); 726 }727 728 /** Alternatively, you can invoke the SubscriptExpr constructor without parenthesized or op */729 public static SubscriptExpr makeSubscriptExpr(Span span, Expr obj,730 List<Expr> subs) {731 return new SubscriptExpr(span, false, obj, subs,732 Option.<Op>none(),733 Collections.<StaticArg>emptyList());734 }735 736 public static SubscriptExpr makeSubscriptExpr(Span span, Expr obj,737 List<Expr> subs,738 Option<Op> op,739 List<StaticArg> sargs) {740 return new SubscriptExpr(span, false, obj, Useful.immutableTrimmedList(subs), op, sargs);741 }742 743 public static SubscriptExpr makeSubscriptExpr(Span span, Expr obj,744 List<Expr> subs,745 Option<Op> op) {746 return new SubscriptExpr(span, false, obj, subs, op,747 Collections.<StaticArg>emptyList());748 903 } 749 904 … … 848 1003 body.add(new Block(sp, t, false, true, exprs)); 849 1004 return new Do(sp, t, body); 850 }851 852 public static LocalVarDecl makeLocalVarDecl(Id p, Expr _r, Expr _body_expr) {853 List<Expr> _body = new ArrayList<Expr>(1);854 List<LValue> _lhs = new ArrayList<LValue>(1);855 Option<Expr> _rhs = Option.some(_r);856 _body.add(_body_expr);857 _lhs.add(NodeFactory.makeLValue(p.getSpan(), p));858 return new LocalVarDecl(FortressUtil.spanTwo(p, _r), _body, _lhs, _rhs);859 }860 861 public static LocalVarDecl makeLocalVarDecl(Span sp, Id p, Expr _r, Expr _body_expr) {862 List<Expr> _body = new ArrayList<Expr>(1);863 List<LValue> _lhs = new ArrayList<LValue>(1);864 Option<Expr> _rhs = Option.some(_r);865 _body.add(_body_expr);866 _lhs.add(NodeFactory.makeLValue(sp, p));867 return new LocalVarDecl(sp, _body, _lhs, _rhs);868 }869 870 public static LocalVarDecl makeLocalVarDecl(Span sp, List<LValue> lhs, Expr _r, Expr _body_expr) {871 List<Expr> _body = new ArrayList<Expr>(1);872 Option<Expr> _rhs = Option.some(_r);873 _body.add(_body_expr);874 return new LocalVarDecl(sp, _body, lhs, _rhs);875 }876 877 public static LocalVarDecl makeLocalVarDecl(Span sp, List<LValue> lhs,878 Expr _r, List<Expr> _body) {879 Option<Expr> _rhs = Option.some(_r);880 return new LocalVarDecl(sp, _body, lhs, _rhs);881 1005 } 882 1006 … … 1018 1142 } 1019 1143 public Expr forAccumulator(Accumulator e) { 1020 return new Accumulator(e.getSpan(), true, e.getStaticArgs(), 1021 e.getAccOp(), e.getGens(), e.getBody()); 1144 return makeAccumulator(e.getSpan(), true, e.getExprType(), 1145 e.getStaticArgs(), 1146 e.getAccOp(), e.getGens(), e.getBody()); 1022 1147 } 1023 1148 public Expr forAtomicExpr(AtomicExpr e) { … … 1025 1150 } 1026 1151 public Expr forExit(Exit e) { 1027 return new Exit(e.getSpan(), true, e.getExprType() ,e.getTarget(), e.getReturnExpr()); 1152 return makeExit(e.getSpan(), true, e.getExprType(), 1153 e.getTarget(), e.getReturnExpr()); 1028 1154 } 1029 1155 … … 1038 1164 } 1039 1165 public Expr forFnExpr(FnExpr e) { 1040 return new FnExpr(e.getSpan(), true, e.getName(),1166 return makeFnExpr(e.getSpan(), true, e.getExprType(), e.getName(), 1041 1167 e.getStaticParams(), e.getParams(), 1042 1168 e.getReturnType(), e.getWhereClause(), … … 1047 1173 } 1048 1174 public Expr forLocalVarDecl(LocalVarDecl e) { 1049 return new LocalVarDecl(e.getSpan(), true, e.getBody(),1050 e.get Lhs(), e.getRhs());1175 return makeLocalVarDecl(e.getSpan(), true, e.getExprType(), 1176 e.getBody(), e.getLhs(), e.getRhs()); 1051 1177 } 1052 1178 public Expr forOpExpr(OpExpr e) { … … 1093 1219 } 1094 1220 public Expr forArrayComprehension(ArrayComprehension e) { 1095 return new ArrayComprehension(e.getSpan(), true, e.getClauses()); 1221 return makeArrayComprehension(e.getSpan(), true, e.getExprType(), 1222 e.getStaticArgs(), e.getClauses()); 1096 1223 } 1097 1224 public Expr forChainExpr(ChainExpr e) { … … 1119 1246 } 1120 1247 public Expr forOpRef(OpRef e) { 1121 return ExprFactory.makeOpRef(e.getSpan(), true, e.getExprType(),1248 return makeOpRef(e.getSpan(), true, e.getExprType(), 1122 1249 e.getStaticArgs(), e.getLexicalDepth(), 1123 1250 e.getOriginalName(), e.getNames(), … … 1125 1252 } 1126 1253 public Expr forSubscriptExpr(SubscriptExpr e) { 1127 return new SubscriptExpr(e.getSpan(), true, e.getObj(),1128 e.getSubs(), e.getOp(),1129 e.getStaticArgs());1254 return makeSubscriptExpr(e.getSpan(), true, e.getExprType(), 1255 e.getObj(), e.getSubs(), e.getOp(), 1256 e.getStaticArgs()); 1130 1257 } 1131 1258 public Expr forTemplateGapExpr(TemplateGapExpr e) { -
trunk/ProjectFortress/src/com/sun/fortress/parser/DelimitedExpr.rats
r3158 r3198 326 326 a3s.list()); 327 327 if (a1 == null) a1 = Collections.<StaticArg>emptyList(); 328 yyValue = newArrayComprehension(createSpan(yyStart,yyCount),a1,clauses);328 yyValue = ExprFactory.makeArrayComprehension(createSpan(yyStart,yyCount),a1,clauses); 329 329 } 330 330 / (BIG w)? opencurly a1:StaticArgs? w a2:Entry wr bar wr … … 333 333 Op opr = NodeFactory.makeEnclosing(span, "BIG {|->", "BIG }"); 334 334 if (a1 == null) a1 = Collections.<StaticArg>emptyList(); 335 yyValue = newAccumulator(createSpan(yyStart,yyCount), a1, opr, a3, a2);335 yyValue = ExprFactory.makeAccumulator(createSpan(yyStart,yyCount), a1, opr, a3, a2); 336 336 } 337 337 / (BIG w)? a1:LeftEncloser a2:StaticArgs? w a3:Expr wr bar wr … … 341 341 "BIG " + a5.getText()); 342 342 if (a2 == null) a2 = Collections.<StaticArg>emptyList(); 343 yyValue = newAccumulator(createSpan(yyStart,yyCount), a2, opr, a4, a3);343 yyValue = ExprFactory.makeAccumulator(createSpan(yyStart,yyCount), a2, opr, a4, a3); 344 344 }; 345 345 -
trunk/ProjectFortress/src/com/sun/fortress/parser/Expression.rats
r3192 r3198 466 466 if (a2 == null) ss = Collections.<StaticArg>emptyList(); 467 467 else ss = a2; 468 return FortressUtil.makeSubscripting(span,468 return ExprFactory.makeSubscripting(span, 469 469 a1, a4, base, a3, ss); 470 470 } else return syntaxError(span, … … 485 485 if (a2 == null) ss = Collections.<StaticArg>emptyList(); 486 486 else ss = a2; 487 return FortressUtil.makeSubscripting(span, base, a1.getText(),488 a4.getText(), a3, ss);487 return ExprFactory.makeSubscripting(span, base, a1.getText(), 488 a4.getText(), a3, ss); 489 489 }}; 490 490 }; … … 655 655 { Option<Id> name = (a1 == null) ? Option.<Id>none() : Option.some(a1); 656 656 Option<Expr> expr = Option.wrap(a2); 657 yyValue = new Exit(createSpan(yyStart,yyCount), false, Option.<Type>none() ,name, expr);657 yyValue = ExprFactory.makeExit(createSpan(yyStart,yyCount), Option.<Type>none(), name, expr); 658 658 } 659 659 / <ErrorProduction1> … … 670 670 yyValue = ExprFactory.makeOpExpr(span, a1, a4, a2); 671 671 } else 672 yyValue = newAccumulator(span, a2, a1, a3, a4);672 yyValue = ExprFactory.makeAccumulator(span, a2, a1, a3, a4); 673 673 } 674 674 / <ErrorProduction2> -
trunk/ProjectFortress/src/com/sun/fortress/parser/LocalDecl.rats
r3186 r3198 116 116 a2 = FortressUtil.setMutable(a2, createSpan(yyStart,3)); 117 117 } 118 yyValue = FortressUtil.mkLocalVarDecl(createSpan(yyStart,yyCount), a2, a3);118 yyValue = ExprFactory.makeLocalVarDecl(createSpan(yyStart,yyCount), a2, a3); 119 119 } 120 120 / a1:(var w)? a2:NoNewlineVarWTypes s colonequals w a3:NoNewlineExpr 121 121 { a2 = FortressUtil.setMutable(a2, createSpan(yyStart,3)); 122 yyValue = FortressUtil.mkLocalVarDecl(createSpan(yyStart,yyCount), a2, a3);122 yyValue = ExprFactory.makeLocalVarDecl(createSpan(yyStart,yyCount), a2, a3); 123 123 } 124 124 / a1:(var w)? a2:NoNewlineVarWTypes 125 125 { if (a1 != null) a2 = FortressUtil.setMutable(a2, createSpan(yyStart,3)); 126 yyValue = FortressUtil.mkLocalVarDecl(createSpan(yyStart,yyCount), a2);126 yyValue = ExprFactory.makeLocalVarDecl(createSpan(yyStart,yyCount), a2); 127 127 } 128 128 / a1:VarWoTypes s equals w a2:NoNewlineExpr 129 { yyValue = FortressUtil.mkLocalVarDecl(createSpan(yyStart,yyCount),a1,a2); }129 { yyValue = ExprFactory.makeLocalVarDecl(createSpan(yyStart,yyCount),a1,a2); } 130 130 / a1:(var w)? a2:VarWoTypes s colon s a3:NoNewlineType s ellipses a4:(s InitVal)? 131 131 { Option<Expr> init; … … 144 144 } 145 145 } 146 yyValue = FortressUtil.mkLocalVarDecl(createSpan(yyStart,yyCount), a2,146 yyValue = ExprFactory.makeLocalVarDecl(createSpan(yyStart,yyCount), a2, 147 147 init); 148 148 } … … 167 167 } 168 168 } 169 yyValue = FortressUtil.mkLocalVarDecl(span, a2, init);169 yyValue = ExprFactory.makeLocalVarDecl(span, a2, init); 170 170 } 171 171 / <ErrorProduction> var w VarWoTypes s equals w NoNewlineExpr -
trunk/ProjectFortress/src/com/sun/fortress/parser_util/FortressUtil.java
r3193 r3198 149 149 public Option<List<Type>> forNone() { return Option.<List<Type>>none(); } 150 150 }); 151 }152 153 public static Expr makeSubscripting(Span span,154 String left, String right,155 Expr base, List<Expr> args,156 List<StaticArg> sargs) {157 return makeSubscripting(span, base, left, right, args, sargs);158 }159 160 public static Expr makeSubscripting(Span span, Expr base, String open,161 String close, List<Expr> args,162 List<StaticArg> sargs) {163 Op op = NodeFactory.makeEnclosing(span, open, close);164 List<Expr> es;165 if (args == null) es = FortressUtil.emptyExprs();166 else es = args;167 return new SubscriptExpr(span, false, base, es, Option.<Op>some(op), sargs);168 151 } 169 152 … … 586 569 throws_, where_, contract, 587 570 Option.<Expr>some(expr)); 588 }589 590 public static LocalVarDecl mkLocalVarDecl(Span span, List<LValue> lvs,591 Option<Expr> expr) {592 return new LocalVarDecl(span, false, emptyExprs(), lvs, expr);593 }594 public static LocalVarDecl mkLocalVarDecl(Span span, List<LValue> lvs,595 Expr expr) {596 return new LocalVarDecl(span, false, emptyExprs(), lvs,597 Option.<Expr>some(expr));598 }599 public static LocalVarDecl mkLocalVarDecl(Span span, List<LValue> lvs) {600 return new LocalVarDecl(span, false, emptyExprs(), lvs,601 Option.<Expr>none());602 571 } 603 572

