Goose  Diff

Differences From Artifact [9b56d29947]:

  • File bs/builtins/operators/logic.cpp — part of check-in [7dcd0447a3] at 2019-09-22 22:42:49 on branch trunk — Implemented overloads of boolean or/and operators for verification expressions that don't do shortcut evaluation but simply emit the corresponding llr instruction. (user: achavasse size: 10194)

To Artifact [89b31d6990]:

  • File bs/builtins/operators/logic.cpp — part of check-in [2628782ef2] at 2019-09-29 20:30:08 on branch trunk — Added a specific llr instruction for 'not' for the sake of constructing z3 expressions. (user: achavasse size: 10182)

15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
15
16
17
18
19
20
21

22
23
24
25
26
27
28
29







-
+







        BuildParseRule( e, "!"_sid,
            PrefixOp( "operator_logical_not"_sid, precedence::UnaryOps,
                BuildGenericTupleOperator(),

                ForType< bool >( []( auto&& operand ) -> Value
                {
                    return BuildComputedValue( GetValueType< bool >(),
                        Xor( operand, ToValue( true ) ) );
                        llr::Not( operand ) );
                } )
            )
        );

        BuildParseRule( e, "~"_sid,
            PrefixOp( "operator_bitwise_not"_sid, precedence::UnaryOps,
                BuildGenericTupleOperator(),