Changeset 10715
- Timestamp:
- 06/16/06 10:26:34 (2 years ago)
- Files:
-
- 4 modified
-
src/Pugs/Monads.hs (modified) (2 diffs)
-
src/Pugs/Parser.hs (modified) (1 diff)
-
t/magicals/subname.t (modified) (1 diff)
-
t/subroutines/pointy.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Monads.hs
r9988 r10715 272 272 subRec <- sequence 273 273 [ genSym "&?ROUTINE" (codeRef (orig sub)) 274 , genSym "$?SUBNAME" (scalarRef $ VStr $ subName sub)]275 274 -- retRec <- genSubs env "&return" retSub 276 275 callerRec <- genSubs env "&?CALLER_CONTINUATION" (ccSub cc) … … 280 279 , envOuter = maybe Nothing envOuter (subEnv sub) 281 280 , envImplicit= envImplicit e `Map.union` Map.fromList 282 [ ("&?ROUTINE", ()), (" $?SUBNAME", ()), ("&?CALLER_CONTINUATION", ()) ]281 [ ("&?ROUTINE", ()), ("&?CALLER_CONTINUATION", ()) ] 283 282 } 284 283 ccSub :: (Val -> Eval Val) -> Env -> VCode -
src/Pugs/Parser.hs
r10668 r10715 632 632 optional (string "v" <|> string "Perl-") 633 633 version <- many1 (choice [ digit, char '.' ]) 634 optional ruleAuthorPart 634 optional $ do 635 variant <- ruleAuthorPart 636 {- 637 when (map toLower variant /= "pugs") $ do 638 pos <- getPosition 639 error $ "Perl implementation " ++ tail variant ++ " required--this is only Pugs v" ++ versnum ++ ", stopped at " ++ (show pos) 640 -} 635 641 return version 636 642 -
t/magicals/subname.t
r5965 r10715 7 7 8 8 9 # L<S06/"The &? SUB routine" /contains the name of the current subroutine/>10 # L<S02/"Names" /Which sub name am I in/>11 sub foo { return $?SUBNAME }12 is(foo(), '&main::foo', 'got the right subname');9 # L<S06/"The &?ROUTINE object" /current routine name/> 10 # L<S02/"Names" /Which routine am I in/> 11 sub foo { return &?ROUTINE.name } 12 is(foo(), '&main::foo', 'got the right routine name'); 13 13 14 my $bar = sub { return $?SUBNAME};15 is($bar(), '<anon>', 'got the right subname (anon-block)');14 my $bar = sub { return &?ROUTINE.name }; 15 is($bar(), '<anon>', 'got the right routine name (anon-block)'); 16 16 17 my $baz = try { $?SUBNAME};18 ok(not(defined $baz), ' $?SUBNAME not defined outside of a sub');17 my $baz = try { &?ROUTINE.name }; 18 ok(not(defined $baz), '&?ROUTINE.name not defined outside of a routine'); -
t/subroutines/pointy.t
r9990 r10715 65 65 sub outer { 66 66 my $s = -> { 67 is( $?SUBNAME, '&main::outer', 'pointy still sees outer\'s $?SUBNAME');67 is(&?ROUTINE.name, '&main::outer', 'pointy still sees outer\'s &?ROUTINE'); 68 68 69 69 $str ~= 'inner';
