@@ -2206,7 +2206,7 @@ defmodule Kernel do
2206
2206
2207
2207
"""
2208
2208
defmacro binding ( ) do
2209
- do_binding ( nil , __CALLER__ . vars , Macro.Env . in_match? ( __CALLER__ ) )
2209
+ do_binding ( nil , nil , __CALLER__ . vars , Macro.Env . in_match? ( __CALLER__ ) )
2210
2210
end
2211
2211
2212
2212
@ doc """
@@ -2229,7 +2229,7 @@ defmodule Kernel do
2229
2229
end
2230
2230
2231
2231
defmacro binding ( context ) when is_atom ( context ) do
2232
- do_binding ( context , __CALLER__ . vars , Macro.Env . in_match? ( __CALLER__ ) )
2232
+ do_binding ( nil , context , __CALLER__ . vars , Macro.Env . in_match? ( __CALLER__ ) )
2233
2233
end
2234
2234
2235
2235
@ doc """
@@ -2254,14 +2254,8 @@ defmodule Kernel do
2254
2254
do_binding ( list , context , __CALLER__ . vars , Macro.Env . in_match? ( __CALLER__ ) )
2255
2255
end
2256
2256
2257
- defp do_binding ( context , vars , in_match ) do
2258
- for { v , c } <- vars , c == context , v != :_@CALLER do
2259
- { v , wrap_binding ( in_match , { v , [ ] , c } ) }
2260
- end
2261
- end
2262
-
2263
2257
defp do_binding ( list , context , vars , in_match ) do
2264
- for { v , c } <- vars , c == context , :lists . member ( v , list ) do
2258
+ for { v , c } <- vars , c == context , list == nil or :lists . member ( v , list ) do
2265
2259
{ v , wrap_binding ( in_match , { v , [ ] , c } ) }
2266
2260
end
2267
2261
end
0 commit comments