mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 05:23:03 +12:00
fix: ignore input?
when considering refs equal in filter subset checking
This commit is contained in:
parent
b3977817bb
commit
3b3e3a06f2
1 changed files with 20 additions and 2 deletions
|
@ -74,6 +74,24 @@ defmodule Ash.SatSolver do
|
|||
end
|
||||
|
||||
defp do_strict_filter_subset(filter, candidate) do
|
||||
filter =
|
||||
Filter.map(filter, fn
|
||||
%Ref{} = ref ->
|
||||
%{ref | input?: false}
|
||||
|
||||
other ->
|
||||
other
|
||||
end)
|
||||
|
||||
candidate =
|
||||
Filter.map(candidate, fn
|
||||
%Ref{} = ref ->
|
||||
%{ref | input?: false}
|
||||
|
||||
other ->
|
||||
other
|
||||
end)
|
||||
|
||||
expr = BooleanExpression.new(:and, filter.expression, candidate.expression)
|
||||
|
||||
case transform_and_solve(
|
||||
|
@ -704,11 +722,11 @@ defmodule Ash.SatSolver do
|
|||
end
|
||||
|
||||
defp refs(%{__operator__?: true, left: left, right: right}) do
|
||||
Enum.filter([left, right], &match?(%Ref{}, &1))
|
||||
Enum.filter([left, right], &match?(%Ref{}, &1)) |> Enum.map(&Map.put(&1, :input?, false))
|
||||
end
|
||||
|
||||
defp refs(%{__function__?: true, arguments: arguments}) do
|
||||
Enum.filter(arguments, &match?(%Ref{}, &1))
|
||||
Enum.filter(arguments, &match?(%Ref{}, &1)) |> Enum.map(&Map.put(&1, :input?, false))
|
||||
end
|
||||
|
||||
defp refs(_), do: []
|
||||
|
|
Loading…
Reference in a new issue