parser panics on lvalue methods
[p5sagit/p5-mst-13.2.git] / t / op / method.t
index 3fc7a4b..0d4e09b 100755 (executable)
@@ -9,7 +9,7 @@ BEGIN {
     @INC = '../lib';
 }
 
-print "1..75\n";
+print "1..73\n";
 
 @A::ISA = 'B';
 @B::ISA = 'C';
@@ -21,9 +21,7 @@ my $cnt = 0;
 sub test {
   print "# got `$_[0]', expected `$_[1]'\nnot " unless $_[0] eq $_[1]; 
   # print "not " unless shift eq shift;
-  print "ok ", ++$cnt;
-  print " @_[2..$#_]" if @_ > 2;
-  print "\n";
+  print "ok ", ++$cnt, "\n"
 }
 
 # First, some basic checks of method-calling syntax:
@@ -234,34 +232,6 @@ eval 'sub Foo::boogie { "yes, sir!" }';
 test( $::{"Foo::"} ? "ok" : "none", "ok");  # should exist now
 test( Foo->boogie(), "yes, sir!");
 
-# Some simpleminded tests for the SUPER:: pseudoclass. 
-# Note that, right now, SUPER:: seems to start looking in the package
-# it was compiled in, rather than in the class it was called in.
-# Which is wrong. Hence the two TODO tests.
-package Parent;
-
-sub foo { 1 };
-
-package Child;
-
-@Child::ISA = 'Parent';
-
-sub child_foo {
-    my $self = shift;
-    $self->SUPER::foo;
-}
-
-package main;
-
-sub Child::main_foo { $_[0]->SUPER::foo }
-
-*Child::late_foo = sub { $_[0]->SUPER::foo };
-
-
-test( scalar(eval {Child->child_foo}), 1 );
-test( scalar(eval {Child->main_foo}), 1, "# TODO SUPER:: non intuitive");
-test( scalar(eval {Child->late_foo}), 1, "# TODO SUPER:: non intuitive");
-
 # TODO: universal.t should test NoSuchPackage->isa()/can()
 
 # This is actually testing parsing of indirect objects and undefined subs
@@ -270,4 +240,13 @@ test( scalar(eval {Child->late_foo}), 1, "# TODO SUPER:: non intuitive");
 eval { sub AUTOLOAD { "ok ", shift, "\n"; } };
 print nonsuch(++$cnt);
 
+# Bug ID 20010902.002
+test (
+    eval q[
+       $x = 'x';
+       sub Foo::x : lvalue { $x }
+       Foo->$x = 'ok';
+    ] || $@, 'ok'
+);
+
 print "# $cnt tests completed\n";