Changeset 7925
- Timestamp:
- 11/10/05 18:33:20 (3 years ago)
- Files:
-
- 2 modified
-
src/Pugs/Prim/Match.hs (modified) (2 diffs)
-
t/statements/given.t (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Match.hs
r7879 r7925 10 10 import Pugs.Types 11 11 import Pugs.Config 12 import Pugs.Prim.Code 12 13 import qualified RRegex.PCRE as PCRE 13 14 import qualified Data.Map as Map … … 82 83 op2Match :: Val -> Val -> Eval Val 83 84 85 op2Match _ y@(VCode _) = do 86 (arity :: Int) <- fromVal =<< op1CodeArity y 87 res <- fromVal =<< case arity of 88 0 -> evalExp $ App (Val y) Nothing [] 89 1 -> do 90 topic <- readVar "$_" 91 evalExp $ App (Val y) Nothing [Val topic] 92 _ -> fail ("Unexpected arity in smart match: " ++ (show arity)) 93 return $ VBool $ res 94 84 95 op2Match x (VRef (MkRef (IScalar sv))) | scalar_iType sv == mkType "Scalar::Const" = do 85 96 y' <- scalar_fetch' sv -
t/statements/given.t
r7924 r7925 4 4 use Test; 5 5 6 plan 4 8;6 plan 49; 7 7 8 8 =kwid … … 244 244 } 245 245 '; 246 ok($x, 'given tests closures for truth', :todo); 246 ok($x, 'given tests 0-arg closures for truth', :todo); 247 } 248 249 # given + closure with 0-arg code 250 { 251 my $x = 41; 252 sub always_true { bool::true } 253 given 1 { 254 when &always_true { $x++ } 255 } 256 is($x, 42, 'given tests 0-arg subs for truth'); 247 257 } 248 258 … … 250 260 { 251 261 my $x = 41; 252 sub setx ($value) { $value == 41 } 253 eval ' 254 given 1 { 255 when &setx { $x++ } 256 } 257 '; 258 is($x, 42, 'given tests closures for truth', :todo); 259 } 260 262 sub maybe_true ($value) { $value eq "mytopic" } 263 given "mytopic" { 264 when &maybe_true { $x++ } 265 } 266 is($x, 42, 'given tests 1-arg subs for truth'); 267 } 268
