[erlang-bugs] internal error in v3_life

Erik Søe Sørensen ess@REDACTED
Tue Dec 20 10:56:03 CET 2011


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/d3754866/attachment.htm>


More information about the erlang-bugs mailing list