@@ -2386,8 +2386,9 @@ get_qual_anno(Abstract) -> element(2, Abstract).
23862386% % generator(Line, Generator, Guard, State) -> {Generator',State}.
23872387% % Transform a given generator into its #igen{} representation.
23882388
2389- generator (Line , {match ,L ,P ,E }, Gs , StrictPats , St0 ) ->
2390- generator (Line , {generate_strict ,L ,P ,{cons ,L ,E ,{nil ,L }}}, Gs , StrictPats , St0 );
2389+ generator (Line , {match ,L ,P0 ,E0 }, Gs , StrictPats , St0 ) ->
2390+ {P1 , E1 } = rewrite_compr_assign (P0 , E0 ),
2391+ generator (Line , {generate_strict ,L ,P1 ,{cons ,L ,E1 ,{nil ,L }}}, Gs , StrictPats , St0 );
23912392generator (Line , {Generate ,Lg ,P0 ,E }, Gs , StrictPats , St0 )
23922393 when Generate =:= generate ;
23932394 Generate =:= generate_strict ->
@@ -2664,6 +2665,11 @@ list_gen_pattern(P0, Line, St) ->
26642665 nomatch -> {nomatch ,add_warning (Line , {nomatch ,pattern }, St )}
26652666 end .
26662667
2668+ rewrite_compr_assign (P1 , {match ,L2 ,P2 ,E }) ->
2669+ rewrite_compr_assign ({match ,L2 ,P1 ,P2 }, E );
2670+ rewrite_compr_assign (P , E ) ->
2671+ {P , E }.
2672+
26672673% % is_guard_test(Expression) -> true | false.
26682674% % Test if a general expression is a guard test.
26692675% %
0 commit comments