[erlang-bugs] internal error in v3_life

Erik Søe Sørensen ess@REDACTED
Tue Dec 20 11:00:32 CET 2011


And simpler still:

    split_cases(A) ->
         case A of
             x -> Z = dummy1;
             _ -> Z = dummy2,
              a=b
         end,
         Z.



On 20-12-2011 10:56, Erik Søe Sørensen wrote:
> A simplified version:
>
>     -module(comperr).
>     -compile([export_all]).
>
>     split_cases(A) ->
>         case A of
>             x -> Z = dummy1;
>             _ -> Z = dummy2,
>              a=b
>         end,
>         case Z of
>             _ -> ok
>         end.
>
> This fails with erts-5.8.4.
>
> On 20-12-2011 10:01, Håkan Mattsson wrote:
>> -module(foo).
>> -compile([export_all]).
>>
>> split_cases(IsRecursive, [Case | Cases], Acc) ->
>>      case binary:split(Case,<<":">>) of
>>          [<<"qmt file", _/binary>>  |_] ->
>>              Qmt = Case,
>>              case Cases of
>>                  [Case2 | Cases2] ->
>>                      Sections = binary:split(Case2,<<"\n">>, [global]);
>>                  [] ->
>>                      Sections = binary:split(Case,<<"\n">>, []),
>>                      Cases2 = []
>>              end;
>>          [<<"test case", _/binary>>  |_] ->
>>              Qmt =<<>>,
>>              Sections = binary:split(Case,<<"\n">>, [global]),
>>              Cases2 = Cases;
>>          [<<>>] ->
>>
>>              io:format("DEBUG: ~p ~p\n", [Case, Cases]),
>>              Qmt =<<>>,
>>              Sections = [],
>>              Cases2 = [],
>>              a=b
>>      end,
>>      case Sections of
>>          [Reason] ->
>>              case binary:split(Qmt,<<":">>) of
>>                  [_, QmtFile] ->  ok;
>>                  []           ->  QmtFile = Qmt
>>              end,
>>              Res = {result_case, QmtFile,<<"ERROR">>, Reason},
>>              split_cases(IsRecursive, Cases2, [Res | Acc]);
>>          [QmtCase, Reason] ->
>>              [_, QmtFile] = binary:split(QmtCase,<<":">>),
>>              Res =
>>                  case binary:split(Reason,<<":">>) of
>>                      [<<"result", _/binary>>, Reason2] ->
>>                          {result_case, QmtFile, Reason2, Reason};
>>                      [<<"error", _/binary>>, Reason2] ->
>>                          {result_case, QmtFile,<<"ERROR">>, Reason2}
>>                  end,
>>              split_cases(IsRecursive, Cases2, [Res | Acc]);
>>          [QmtCase, ScriptCase, EventCase | DocAndResult] ->
>>              [_, QmtFile]    = binary:split(QmtCase,<<":">>),
>>              [_, ScriptFile] = binary:split(ScriptCase,<<":">>),
>>              [_, EventFile]  = binary:split(EventCase,<<":">>),
>>              EventLog = binary_to_list(EventFile),
>>              case IsRecursive of
>>                  true ->
>>                      case annotate_log(EventLog) of
>>                          ok ->
>>                              ok;
>>                          {error, _, Reason} ->
>>                              io:format("ERROR in ~s\n\~p\n", [EventLog, Reason])
>>                      end;
>>                  false ->
>>                      ignore
>>              end,
>>              {Doc, ResultCase} = split_doc(DocAndResult, []),
>>              Result = parse_result(ResultCase),
>>              HtmlLog = EventLog ++ ".html",
>>              Res = {test_case, QmtFile, Qmt, ScriptFile, EventLog, Doc,
>>                     HtmlLog, Result},
>>              split_cases(IsRecursive, Cases2, [Res | Acc])
>>      end;
>> split_cases(_IsRecursive, [], Acc) ->
>>      lists:reverse(Acc).
>>
>> annotate_log(_EventLog) ->
>>      dummy.
>>
>> split_doc(_DocAndResult, _Acc) ->
>>      {dummy, dummy}.
>>
>> parse_result(_ResultCase) ->
>>      dummy.
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20111220/add824f6/attachment.htm>


More information about the erlang-bugs mailing list