Goose  Diff

Differences From Artifact [7f0d5c8e08]:

  • File bs/builtins/statements/using.cpp — part of check-in [61b4955ba0] at 2019-03-23 14:04:07 on branch trunk — ir: made it possible to use anonymous ANYTERM patterns in matching. (user: achavasse size: 4654)

To Artifact [2dee3ee43b]:

  • File bs/builtins/statements/using.cpp — part of check-in [5ea39472a2] at 2019-04-12 19:37:30 on branch trunk —
    • cleaned up and refactored llr into a proper cfg representation.
    • added a CFG builder class in sema, currently very rudimentary.
    • split the parser's value building workflow from the llr construction workflow, which now goes through a CFG builder.
    • implemented the return statement.
    (user: achavasse size: 4661)

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

                    if( !p.parseExpression() )
                    {
                        cout << "invalid using expression.\n";
                        return Env::Status::NoMatch;
                    }

                    auto result = p.result();
                    if( !result )
                    {
                        cout << "invalid using expression.\n";
                        return Env::Status::NoMatch;
                    }

                    content = ValueToIRExpr( *result );







|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

                    if( !p.parseExpression() )
                    {
                        cout << "invalid using expression.\n";
                        return Env::Status::NoMatch;
                    }

                    auto result = p.peekLastValue();
                    if( !result )
                    {
                        cout << "invalid using expression.\n";
                        return Env::Status::NoMatch;
                    }

                    content = ValueToIRExpr( *result );