@@ -556,7 +556,7 @@ defmodule Module.Types.Pattern do
556556 root = % { root: { :var , version } , expr: match }
557557
558558 { precise? , static , dynamic , context } =
559- Enum . reduce ( matches , { precise? , [ ] , [ ] , context } , fn
559+ Enum . reduce ( matches , { precise? , [ ] , [ { :var , version } ] , context } , fn
560560 pattern , { precise? , static , dynamic , context } ->
561561 { type , pattern_precise? , context } = of_pattern ( pattern , [ root ] , stack , context )
562562 precise? = precise? and pattern_precise?
@@ -569,18 +569,14 @@ defmodule Module.Types.Pattern do
569569 end )
570570
571571 return =
572- cond do
573- dynamic == [ ] -> Enum . reduce ( static , & intersection / 2 )
574- static == [ ] -> { :intersection , dynamic }
575- true -> { :intersection , [ Enum . reduce ( static , & intersection / 2 ) | dynamic ] }
572+ if static == [ ] do
573+ { :intersection , dynamic }
574+ else
575+ { :intersection , [ Enum . reduce ( static , & intersection / 2 ) | dynamic ] }
576576 end
577577
578- if dynamic == [ ] do
579- { return , precise? , context }
580- else
581- context = of_var ( var , version , [ % { root: return , expr: match } ] , context )
582- { return , precise? , context }
583- end
578+ context = of_var ( var , version , [ % { root: return , expr: match } ] , context )
579+ { return , precise? , context }
584580 end
585581
586582 # %Struct{...}
0 commit comments