• Austin Clements's avatar
    Implement single-valued, non-variadic function literals and · d3888fe8
    Austin Clements authored
    function calling.  Implement a type compiler and named types.
    Implement a universal scope containing built-in named types,
    and some built-in constants.  Implement a simple virtual
    machine for executing statements and single-valued return.
    
    Fix many places that incorrectly dealt with named types.  In
    particular, the Type.Zero methods now use the type's bit count
    to determine the appropriate value representation.  As a
    result, a bit count of 0 now means architecture-dependent and
    bounded types use unsafe.Sizeof to determine the correct
    bounds.  Previously, the bounds on a 32-bit machine would have
    been wrong.
    
    Eliminated Type.compatible, since the implementation is
    equivalent for all types.  Added Type.rep that shallowly
    strips named types.  Replaced almost all uses of Type.literal
    with Type.rep.
    
    Fix implementation of assign-op's so it only evaluates the
    left side once.  As part of this, there is now a generic way
    to separate out the effect and value of an expression.
    
    R=rsc
    APPROVED=rsc
    DELTA=1530  (1244 added, 68 deleted, 218 changed)
    OCL=32184
    CL=32230
    d3888fe8
func.go 1.45 KB