Goose  Diff

Differences From Artifact [02b37c9a3b]:

  • File bs/builtins/operators/comma.cpp — part of check-in [5aab57179e] at 2019-01-22 22:46:29 on branch trunk — Builtins: implemented the comma operator. (user: achavasse size: 579)

To Artifact [269cd3c304]:

  • File bs/builtins/operators/comma.cpp — part of check-in [8a8e76084e] at 2019-03-02 21:01:51 on branch trunk — Function calls are now eagerly evaluated during parsing. (user: achavasse size: 558)

1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21













-
+







#include "builtins/builtins.h"
#include "parse/parse.h"
#include "precedence.h"

using namespace empathy;
using namespace empathy::ir;
using namespace empathy::parse;

namespace empathy::builtins
{
    void SetupCommaOp( Env& e )
    {
        RegisterLeftAssInfixOp( e, ","_sid, precedence::CommaOp,
            []( auto&& lhs, auto&& rhs ) -> optional< Value >
            []( auto&& lhs, auto&& rhs )
            {
                if( IsOpenTuple( lhs ) )
                    return AppendToTuple( lhs, rhs );

                return AppendToTuple( AppendToTuple( EmptyTuple(), lhs ), rhs );
            } );
    }