Changeset 10715

Show
Ignore:
Timestamp:
06/16/06 10:26:34 (2 years ago)
Author:
audreyt
Message:

* $?SUBNAME is no more (not since tokyo hackathon); use

&?ROUTINE.name instead. Also &?SUB is now &?ROUTINE
since it works in methods too.

Files:
4 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Monads.hs

    r9988 r10715  
    272272            subRec <- sequence 
    273273                [ genSym "&?ROUTINE" (codeRef (orig sub)) 
    274                 , genSym "$?SUBNAME" (scalarRef $ VStr $ subName sub)] 
    275274            -- retRec    <- genSubs env "&return" retSub 
    276275            callerRec <- genSubs env "&?CALLER_CONTINUATION" (ccSub cc) 
     
    280279                , envOuter   = maybe Nothing envOuter (subEnv sub) 
    281280                , envImplicit= envImplicit e `Map.union` Map.fromList 
    282                     [ ("&?ROUTINE", ()), ("$?SUBNAME", ()), ("&?CALLER_CONTINUATION", ()) ] 
     281                    [ ("&?ROUTINE", ()), ("&?CALLER_CONTINUATION", ()) ] 
    283282                } 
    284283    ccSub :: (Val -> Eval Val) -> Env -> VCode 
  • src/Pugs/Parser.hs

    r10668 r10715  
    632632    optional (string "v" <|> string "Perl-") 
    633633    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        -} 
    635641    return version 
    636642 
  • t/magicals/subname.t

    r5965 r10715  
    77 
    88 
    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/> 
     11sub foo { return &?ROUTINE.name } 
     12is(foo(), '&main::foo', 'got the right routine name'); 
    1313 
    14 my $bar = sub { return $?SUBNAME }; 
    15 is($bar(), '<anon>', 'got the right subname (anon-block)'); 
     14my $bar = sub { return &?ROUTINE.name }; 
     15is($bar(), '<anon>', 'got the right routine name (anon-block)'); 
    1616 
    17 my $baz = try { $?SUBNAME }; 
    18 ok(not(defined $baz), '$?SUBNAME not defined outside of a sub'); 
     17my $baz = try { &?ROUTINE.name }; 
     18ok(not(defined $baz), '&?ROUTINE.name not defined outside of a routine'); 
  • t/subroutines/pointy.t

    r9990 r10715  
    6565sub outer {   
    6666    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');  
    6868 
    6969        $str ~= 'inner';