Add a test for not griping about references as array
Jarkko Hietaniemi [Wed, 2 May 2001 13:26:01 +0000 (13:26 +0000)]
indices if the reference has magic in it (overloaded
methods).

p4raw-id: //depot/perl@9957

pod/perldiag.pod
t/pragma/warn/pp_hot

index eab0556..cd32d72 100644 (file)
@@ -3778,14 +3778,16 @@ old way has bad side effects.
 (D deprecated) This was an ill-advised attempt to emulate a poorly
 defined B<awk> feature.  Use an explicit printf() or sprintf() instead.
 
-=item Use of reference "%s" in array index
+=item Use of reference "%s" as array index
 
 (W) You tried to use a reference as an array index; this probably
-isn't what you mean, because references tend to be huge numbers which
-take you out of memory, and so usually indicates programmer error.
+isn't what you mean, because references in numerical context tend
+to be huge numbers, and so usually indicates programmer error.
 
 If you really do mean it, explicitly numify your reference, like so:
-C<$array[0+$ref]>
+C<$array[0+$ref]>.  This warning is not given for overloaded objects,
+either, because you can overload the numification and stringification
+operators and then you assumedly know what you are doing.
 
 =item Use of reserved word "%s" is deprecated
 
index 26aef63..b21117c 100644 (file)
@@ -245,3 +245,21 @@ print $x[\1];
 EXPECT
 OPTION regex
 Use of reference ".*" as array index at - line 4.
+########
+# pp_hot.c [pp_aelem]
+package Foo;use overload q("") => sub {};package main;$a = bless {}, "Foo";
+$b = {};
+{
+use warnings 'misc';
+print $x[$a];
+print $x[$b];
+}
+{
+no warnings 'misc';
+print $x[$a];
+print $x[$b];
+}
+
+EXPECT
+OPTION regex
+Use of reference ".*" as array index at - line 7.