Goose  Diff

Differences From Artifact [7b49f6de3b]:

  • File bs/builtins/operators/dollar.cpp — part of check-in [0e66d22527] at 2019-03-30 15:30:31 on branch trunk —
    • Changed type's type representation to be able to pass types around as value anywhere.
    • Fixed a bunch of bugs.
    (user: achavasse size: 4397)

To Artifact [61d597b133]:

  • File bs/builtins/operators/dollar.cpp — part of check-in [f5fb53ad20] at 2019-04-04 20:08:09 on branch trunk — Higher order polymorphism: refactored TDecl to use its own representation as its signature. (user: achavasse size: 4499)

112
113
114
115
116
117
118
119


120
121
122
123
124
125
126
            return false;
        }

        if( !leftVal->isType() && !IsTExpr( *leftVal )  )
            return false;

        auto typeOrTExpr = ValueToIRExpr( *p.pop() );
        p.push( ToValue( TDecl( move( typeOrTExpr ), ValueToIRExpr( *val ) ) ) );


        return true;
    }
}

namespace empathy::builtins
{
    void SetupDollarOp( Env& e )







|
>
>







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
            return false;
        }

        if( !leftVal->isType() && !IsTExpr( *leftVal )  )
            return false;

        auto typeOrTExpr = ValueToIRExpr( *p.pop() );
        auto tdecl = builtins::BuildTDecl( p.resolver()->context(), move( typeOrTExpr ), ValueToIRExpr( *val ) );
        assert( tdecl );
        p.push( ToValue( move( *tdecl ) ) );
        return true;
    }
}

namespace empathy::builtins
{
    void SetupDollarOp( Env& e )