diff --git a/lib/ecto/query/builder.ex b/lib/ecto/query/builder.ex index 5d9887deac..b81042d419 100644 --- a/lib/ecto/query/builder.ex +++ b/lib/ecto/query/builder.ex @@ -52,7 +52,11 @@ defmodule Ecto.Query.Builder do which include all primitive types and custom user types. Also note custom user types do not show up during compilation time. """ - @type quoted_type :: Ecto.Type.primitive() | {non_neg_integer, atom | Macro.t()} + @type quoted_type :: + Ecto.Type.primitive() + | :atom + | {:tuple, [quoted_type]} + | {non_neg_integer, atom | Macro.t()} @typedoc """ The accumulator during escape. diff --git a/lib/ecto/query/builder/join.ex b/lib/ecto/query/builder/join.ex index 5eebaf46fa..a238830c0c 100644 --- a/lib/ecto/query/builder/join.ex +++ b/lib/ecto/query/builder/join.ex @@ -43,7 +43,7 @@ defmodule Ecto.Query.Builder.Join do """ @spec escape(Macro.t(), Keyword.t(), Macro.Env.t()) :: - {atom, Macro.t() | nil, Macro.t() | nil, list} + {atom, Macro.t() | nil, Macro.t() | nil, Macro.t() | nil, list} def escape({:in, _, [{var, _, context}, expr]}, vars, env) when is_atom(var) and is_atom(context) do {_, expr, assoc, prelude, params} = escape(expr, vars, env)