develooper Front page | perl.cvs.parrot | Postings from January 2009

[svn:parrot] r35860 - trunk/t/op

From:
jonathan
Date:
January 21, 2009 02:59
Subject:
[svn:parrot] r35860 - trunk/t/op
Message ID:
20090121105933.97D96CB9AE@x12.develooper.com
Author: jonathan
Date: Wed Jan 21 02:59:32 2009
New Revision: 35860

Modified:
   trunk/t/op/annotate.t

Log:
[t] Test for annotations in eval'd code. Based on code from TT#180 (coke++).

Modified: trunk/t/op/annotate.t
==============================================================================
--- trunk/t/op/annotate.t	(original)
+++ trunk/t/op/annotate.t	Wed Jan 21 02:59:32 2009
@@ -19,13 +19,14 @@
 .sub main :main
     .include 'include/test_more.pir'
 
-    plan(29)
+    plan(33)
 
     'no_annotations'()
     'annotations_exception'()
     'annotations_ops'()
     'backtrace_annotations'()
     'parrotinterpreter_annotations'()
+    'eval_test'()
 .end
 
 
@@ -193,6 +194,44 @@
     'is'($I0, 43, 'annotations from outer sub returned at point of call with level 1')
 .end
 
+
+.sub 'eval_test'
+    .annotate 'file', 'a.tcl'
+    .annotate 'line', 3
+    $P1 = compreg 'PIR'
+    $S0 = <<"END_PIR"
+.sub 'joe'
+    .annotate 'file', 'b.tcl'
+    die "what?"
+.end
+END_PIR
+    $P2 = $P1($S0)
+    push_eh eek
+    joe()
+    pop_eh
+    die "Should not get here!"
+
+  eek:
+    .get_results($P3)
+    pop_eh
+    $P3 = $P3.'backtrace'()
+    
+    $P4 = $P3[0]
+    $P4 = $P4['annotations']
+    $S0 = $P4['file']
+    'is'($S0, 'b.tcl', 'annotation from eval code OK')
+    $I0 = exists $P4['line']
+    'is'($I0, 0, 'no line annotation (since it was not set)')
+
+    $P4 = $P3[1]
+    $P4 = $P4['annotations']
+    $S0 = $P4['file']
+    'is'($S0, 'a.tcl', 'annotation from caller of eval code OK')
+    $I0 = $P4['line']
+    'is'($I0, 3, 'annotation from caller of eval code OK')
+.end
+
+
 # Local Variables:
 #   mode: pir 
 #   fill-column: 100



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About