Closed p6rt closed 13 years ago
Let's just say I don't think it should work like it does below. Even if it *is* a syntax error, there are better ways to say that. File and line number would be fine, but I'll consider this ticket fixed by just having the very long imcc syntax error go away.
$ touch Foo.pm
$ perl6 -e '(use Foo)()' error:imcc:syntax error, unexpected '(' ('(') in file '.loadlib 'perl6_ops'
.HLL "perl6"
.namespace [] .sub "_block106" :anon :subid("76_1302947813.35435") .param pmc param_128 :slurpy .annotate 'line', 0 .const 'Sub' $P111 = "77_1302947813.35435" capture_lex $P111 .annotate 'line', 1 .local pmc true true = get_hll_global 'True' .lex "__CANDIDATE_LIST__", $P108 get_hll_global $P109, "!UNIT_START" .const 'Sub' $P111 = "77_1302947813.35435" capture_lex $P111 .lex "@_", param_128 $P129 = $P109($P111, param_128) .return ($P129) .const 'Sub' $P134 = "79_1302947813.35435" .return ($P134) .end
.HLL "perl6"
.namespace [] .sub "_block110" :anon :subid("77_1302947813.35435") :outer("76_1302947813.35435") .param pmc param_120 :optional .param int has_param_120 :opt_flag .annotate 'line', 1 .local pmc true true = get_hll_global 'True' .lex "__CANDIDATE_LIST__", $P112 find_lex_skip_current $P113, "$_" $P114 = new ['Perl6Scalar'], $P113 setprop $P114, "rw", true .lex "$_", $P114 find_lex_skip_current $P115, "$/" $P116 = new ['Perl6Scalar'], $P115 setprop $P116, "rw", true .lex "$/", $P116 find_lex_skip_current $P117, "$!" $P118 = new ['Perl6Scalar'], $P117 setprop $P118, "rw", true .lex "$!", $P118 get_hll_global $P119, ["Perl6";"Module"], "Loader" $P119."import"("Foo") if has_param_120, optparam_81 new $P121, "Integer" assign $P121, 0 set param_120, $P121 optparam_81: .lex "$MAIN", param_120 $P0 = find_dynamic_lex "$*CTXSAVE" if null $P0 goto ctxsave_done $I0 = can $P0, "ctxsave" unless $I0 goto ctxsave_done $P0."ctxsave"() ctxsave_done: $P0 = get_hll_global "@!recapture" recapture_loop: unless $P0 goto recapture_loop_end $P1 = shift $P0 fixup_outer_ctx $P1 goto recapture_loop recapture_loop_end: $P122 = () .return ($P122) .end
.HLL "perl6"
.namespace [] .sub "" :load :init :subid("post80") :outer("77_1302947813.35435") .annotate 'line', 1 .const 'Sub' $P111 = "77_1302947813.35435" .local pmc block set block, $P111 $P0 = find_name "!UNIT_OUTER" unless null $P0 goto have_perl6 load_language "perl6" have_perl6: "!UNIT_OUTER"(block) get_hll_global $P123, ["Perl6";"Module"], "Loader" $P124 = "&infix:\<,>"() $P125 = "&circumfix:\<{ }>"($P124) set $S126, "$!storage" getattribute $P127, $P125, $S126 $P123."need"("Foo", $P127) .end
.HLL "perl6"
.namespace [] .sub "_block130" :load :init :anon :subid("78_1302947813.35435") .annotate 'line', 1 $P132 = "!fire_phasers"("CHECK") .return ($P132) .end
.HLL "perl6"
.namespace [] .sub "_block133" :load :anon :subid("79_1302947813.35435") .annotate 'line', 1 .const 'Sub' $P135 = "76_1302947813.35435" $P136 = "!UNIT_START"($P135) .return ($P136) .end
' line 68 error:imcc:syntax error ... somewhere in file '.loadlib 'perl6_ops'
.HLL "perl6"
.namespace [] .sub "_block106" :anon :subid("76_1302947813.35435") .param pmc param_128 :slurpy .annotate 'line', 0 .const 'Sub' $P111 = "77_1302947813.35435" capture_lex $P111 .annotate 'line', 1 .local pmc true true = get_hll_global 'True' .lex "__CANDIDATE_LIST__", $P108 get_hll_global $P109, "!UNIT_START" .const 'Sub' $P111 = "77_1302947813.35435" capture_lex $P111 .lex "@_", param_128 $P129 = $P109($P111, param_128) .return ($P129) .const 'Sub' $P134 = "79_1302947813.35435" .return ($P134) .end
.HLL "perl6"
.namespace [] .sub "_block110" :anon :subid("77_1302947813.35435") :outer("76_1302947813.35435") .param pmc param_120 :optional .param int has_param_120 :opt_flag .annotate 'line', 1 .local pmc true true = get_hll_global 'True' .lex "__CANDIDATE_LIST__", $P112 find_lex_skip_current $P113, "$_" $P114 = new ['Perl6Scalar'], $P113 setprop $P114, "rw", true .lex "$_", $P114 find_lex_skip_current $P115, "$/" $P116 = new ['Perl6Scalar'], $P115 setprop $P116, "rw", true .lex "$/", $P116 find_lex_skip_current $P117, "$!" $P118 = new ['Perl6Scalar'], $P117 setprop $P118, "rw", true .lex "$!", $P118 get_hll_global $P119, ["Perl6";"Module"], "Loader" $P119."import"("Foo") if has_param_120, optparam_81 new $P121, "Integer" assign $P121, 0 set param_120, $P121 optparam_81: .lex "$MAIN", param_120 $P0 = find_dynamic_lex "$*CTXSAVE" if null $P0 goto ctxsave_done $I0 = can $P0, "ctxsave" unless $I0 goto ctxsave_done $P0."ctxsave"() ctxsave_done: $P0 = get_hll_global "@!recapture" recapture_loop: unless $P0 goto recapture_loop_end $P1 = shift $P0 fixup_outer_ctx $P1 goto recapture_loop recapture_loop_end: $P122 = () .return ($P122) .end
.HLL "perl6"
.namespace [] .sub "" :load :init :subid("post80") :outer("77_1302947813.35435") .annotate 'line', 1 .const 'Sub' $P111 = "77_1302947813.35435" .local pmc block set block, $P111 $P0 = find_name "!UNIT_OUTER" unless null $P0 goto have_perl6 load_language "perl6" have_perl6: "!UNIT_OUTER"(block) get_hll_global $P123, ["Perl6";"Module"], "Loader" $P124 = "&infix:\<,>"() $P125 = "&circumfix:\<{ }>"($P124) set $S126, "$!storage" getattribute $P127, $P125, $S126 $P123."need"("Foo", $P127) .end
.HLL "perl6"
.namespace [] .sub "_block130" :load :init :anon :subid("78_1302947813.35435") .annotate 'line', 1 $P132 = "!fire_phasers"("CHECK") .return ($P132) .end
.HLL "perl6"
.namespace [] .sub "_block133" :load :anon :subid("79_1302947813.35435") .annotate 'line', 1 .const 'Sub' $P135 = "76_1302947813.35435" $P136 = "!UNIT_START"($P135) .return ($P136) .end
' line 112 ===SORRY!=== syntax error ... somewhere
$
On Sat Apr 16 03:00:58 2011, masak wrote:
Let's just say I don't think it should work like it does below. Even if it *is* a syntax error, there are better ways to say that. File and line number would be fine, but I'll consider this ticket fixed by just having the very long imcc syntax error go away.
$ touch Foo.pm
$ perl6 -e '(use Foo)()' error:imcc:syntax error, unexpected '(' ('(') in file '.loadlib 'perl6_ops'
...huge amount of PIR...
===SORRY!=== syntax error ... somewhere
It's not a syntax error at Perl 6 level, but it's not really meaningful either - or at least, we don't yet know what it should really return. But it shouldn't do this, so now it's just:
(use Foo)() Method 'postcircumfix:\<( )>' not found for invocant of class 'Nil' (need Foo)() Method 'postcircumfix:\<( )>' not found for invocant of class 'Nil'
Just closing since we don't really know what to test for yet.
/jnthn
The RT System itself - Status changed from 'new' to 'open'
@jnthn - Status changed from 'open' to 'resolved'
Migrated from rt.perl.org#88698 (status was 'resolved')
Searchable as RT88698$