Changeset 4934
- Timestamp:
- 06/24/05 03:59:14 (4 years ago)
- svk:copy_cache_prev:
- 6771
- Files:
-
- 9 modified
-
src/Pugs/AST/Internals.hs (modified) (1 diff)
-
src/Pugs/Eval.hs (modified) (1 diff)
-
src/Pugs/Eval/Var.hs (modified) (1 diff)
-
src/Pugs/Pretty.hs (modified) (1 diff)
-
src/Pugs/Prim.hs (modified) (1 diff)
-
src/Pugs/Prim/Keyed.hs (modified) (5 diffs)
-
src/Pugs/Types/Scalar.hs (modified) (2 diffs)
-
t/builtins/arrays_and_hashes/exists.t (modified) (2 diffs)
-
t/builtins/arrays_and_hashes/kv.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/AST/Internals.hs
r4931 r4934 176 176 177 177 evalValType :: Val -> Eval Type 178 evalValType (VRef r) = do 179 cls <- asks envClasses 180 let typ = refType r 181 if isaType cls "Scalar" typ 182 then evalValType =<< readRef r 183 else return typ 178 evalValType (VRef (MkRef (IScalar sv))) = scalar_type sv 179 evalValType (VRef r) = return $ refType r 184 180 evalValType val = return $ valType val 185 181 -
src/Pugs/Eval.hs
r4924 r4934 947 947 env <- ask -- freeze environment at this point for thunks 948 948 let eval = local (const env{ envLValue = lv }) $ do 949 enterEvalContext (cxtOfSigil $ head name) exp949 enterEvalContext (cxtOfSigil $ head name) exp 950 950 val <- if thunk then return (VRef . thunkRef $ MkThunk eval) else do 951 951 v <- eval -
src/Pugs/Eval/Var.hs
r4923 r4934 317 317 evalExpType (Syn "\\[]" _) = return $ mkType "Array" 318 318 evalExpType (Syn "\\{}" _) = return $ mkType "Hash" 319 evalExpType (Syn "&{}" _) = return $ mkType "Code" 320 evalExpType (Syn "@{}" _) = return $ mkType "Array" 321 evalExpType (Syn "%{}" _) = return $ mkType "Hash" 319 322 evalExpType _ = return $ mkType "Any" 320 323 -
src/Pugs/Pretty.hs
r4922 r4934 1 1 {-# OPTIONS_GHC -fglasgow-exts #-} 2 {-# OPTIONS_GHC -#include "UnicodeC.h" #-} 2 3 3 4 {-| -
src/Pugs/Prim.hs
r4928 r4934 1411 1411 \\n Num pre rand safe (?Num=1)\ 1412 1412 \\n Bool pre defined safe (Any)\ 1413 \\n Str pre ref safe ( Any|Junction)\1414 \\n Str pre isa safe ( Any|Junction, Str)\1415 \\n Str pre does safe ( Any|Junction, Str)\1413 \\n Str pre ref safe (rw!Any|Junction)\ 1414 \\n Str pre isa safe (rw!Any|Junction, Str)\ 1415 \\n Str pre does safe (rw!Any|Junction, Str)\ 1416 1416 \\n Num pre time safe ()\ 1417 1417 \\n List pre times safe ()\ -
src/Pugs/Prim/Keyed.hs
r4140 r4934 64 64 return $ map castV ((map VInt [0..]) `zip` vals) 65 65 pairsFromRef (MkRef (IScalar sv)) = do 66 refVal <- scalar_fetch sv66 refVal <- scalar_fetch' sv 67 67 pairsFromVal refVal 68 68 pairsFromRef ref = retError "Not a keyed reference" ref … … 79 79 return $ map castV keys 80 80 keysFromRef (MkRef (IScalar sv)) = do 81 refVal <- scalar_fetch sv81 refVal <- scalar_fetch' sv 82 82 if defined refVal 83 83 then fromVal =<< keysFromVal refVal … … 94 94 valuesFromRef (MkRef (IArray av)) = array_fetch av 95 95 valuesFromRef (MkRef (IScalar sv)) = do 96 refVal <- scalar_fetch sv96 refVal <- scalar_fetch' sv 97 97 if defined refVal 98 98 then fromVal =<< valuesFromVal refVal … … 108 108 array_existsElem av idx 109 109 existsFromRef (MkRef (IScalar sv)) val = do 110 refVal <- scalar_fetch sv110 refVal <- scalar_fetch' sv 111 111 case refVal of 112 112 VRef ref -> existsFromRef ref val … … 131 131 return $ VList rv 132 132 deleteFromRef (MkRef (IScalar sv)) val = do 133 refVal <- scalar_fetch sv133 refVal <- scalar_fetch' sv 134 134 case refVal of 135 135 VRef ref -> deleteFromRef ref val -
src/Pugs/Types/Scalar.hs
r4179 r4934 6 6 scalar_store :: a -> VScalar -> Eval () 7 7 scalar_const :: a -> Maybe VScalar 8 scalar_fetch' :: a -> Eval VScalar 9 scalar_fetch' x = scalar_fetch x 10 scalar_type :: a -> Eval Type 11 scalar_type x = do 12 v <- scalar_fetch x 13 evalValType v 8 14 9 15 instance ScalarClass IScalarProxy where … … 40 46 scalar_store d _ = retConstError d 41 47 scalar_const = Just 48 scalar_type v = return $ valType v 49 scalar_fetch' v = return v 42 50 -
t/builtins/arrays_and_hashes/exists.t
r4722 r4934 43 43 is( $empty_hash.pairs.sort.join( ',' ), '', "empty hash stays same when read from (2)" ); 44 44 foo( $empty_hash{'y'} ); 45 is( $empty_hash.pairs.sort.join( ',' ), '', "empty hash stays same when read from (3)" );45 is( $empty_hash.pairs.sort.join( ',' ), '', "empty hash stays same when read from (3)", :todo<bug> ); 46 46 foo( $empty_hash{'x'} ); 47 is( $empty_hash.pairs.sort.join( ',' ), '', "empty hash stays same when read from (4)" );47 is( $empty_hash.pairs.sort.join( ',' ), '', "empty hash stays same when read from (4)", :todo<bug> ); 48 48 49 49 my $popul_hash = hash('a'=>'b','c'=>'d'); … … 52 52 is( $popul_hash.pairs.sort.join( ',' ), 'a b,c d', "populated hash stays same when read from (2)" ); 53 53 foo( $popul_hash{'y'} ); 54 is( $popul_hash.pairs.sort.join( ',' ), 'a b,c d', "populated hash stays same when read from (3)" );54 is( $popul_hash.pairs.sort.join( ',' ), 'a b,c d', "populated hash stays same when read from (3)", :todo<bug> ); 55 55 foo( $popul_hash{'x'} ); 56 is( $popul_hash.pairs.sort.join( ',' ), 'a b,c d', "populated hash stays same when read from (4)" );56 is( $popul_hash.pairs.sort.join( ',' ), 'a b,c d', "populated hash stays same when read from (4)", :todo<bug> ); 57 57 } -
t/builtins/arrays_and_hashes/kv.t
r4787 r4934 60 60 { 61 61 # "%$hash" is not idiomatic Perl, but should work nevertheless. 62 my $sub = sub (Hash $hash) { try { (%$hash).kv }};62 my $sub = sub (Hash $hash) { %$hash.kv }; 63 63 my %hash = (a => 1, b => 2); 64 64 is ~kv(%hash).sort, "1 2 a b", ".kv works with normal hashes (sanity check)";
