Raku / old-issue-tracker

Tickets from RT
https://github.com/Raku/old-issue-tracker/issues
2 stars 1 forks source link

Probably the longest and yet least informative error message ever when doing '(use Foo)()' in Rakudo #2407

Closed p6rt closed 13 years ago

p6rt commented 13 years ago

Migrated from rt.perl.org#88698 (status was 'resolved')

Searchable as RT88698$

p6rt commented 13 years ago

From @masak

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

$

p6rt commented 13 years ago

From @jnthn

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

p6rt commented 13 years ago

The RT System itself - Status changed from 'new' to 'open'

p6rt commented 13 years ago

@jnthn - Status changed from 'open' to 'resolved'