Show
Ignore:
Timestamp:
06/24/05 03:59:14 (3 years ago)
Author:
autrijus
svk:copy_cache_prev:
6771
Message:

* Instead of implicitly derefercing and evaluating in rvalue

context when deriving reference types, we now simply look
at the refType for constant scalar references. This means that

sub foo ($x) { $x.ref } my %y; foo(%y);

no longer evaluates to List, but to Hash now.

* Also cleaned up related tests.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Prim/Keyed.hs

    r4140 r4934  
    6464    return $ map castV ((map VInt [0..]) `zip` vals) 
    6565pairsFromRef (MkRef (IScalar sv)) = do 
    66     refVal  <- scalar_fetch sv 
     66    refVal  <- scalar_fetch' sv 
    6767    pairsFromVal refVal 
    6868pairsFromRef ref = retError "Not a keyed reference" ref 
     
    7979    return $ map castV keys 
    8080keysFromRef (MkRef (IScalar sv)) = do 
    81     refVal  <- scalar_fetch sv 
     81    refVal  <- scalar_fetch' sv 
    8282    if defined refVal 
    8383        then fromVal =<< keysFromVal refVal 
     
    9494valuesFromRef (MkRef (IArray av)) = array_fetch av 
    9595valuesFromRef (MkRef (IScalar sv)) = do 
    96     refVal  <- scalar_fetch sv 
     96    refVal  <- scalar_fetch' sv 
    9797    if defined refVal 
    9898        then fromVal =<< valuesFromVal refVal 
     
    108108    array_existsElem av idx 
    109109existsFromRef (MkRef (IScalar sv)) val = do 
    110     refVal  <- scalar_fetch sv 
     110    refVal  <- scalar_fetch' sv 
    111111    case refVal of 
    112112        VRef ref    -> existsFromRef ref val 
     
    131131    return $ VList rv 
    132132deleteFromRef (MkRef (IScalar sv)) val = do 
    133     refVal  <- scalar_fetch sv 
     133    refVal  <- scalar_fetch' sv 
    134134    case refVal of 
    135135        VRef ref    -> deleteFromRef ref val