Skip to content

Commit d8cc841

Browse files
mhanbergjosevalim
authored andcommitted
Include from_brackets metadata in all cases (#13317)
1 parent 7098ac8 commit d8cc841

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

lib/elixir/src/elixir_parser.yrl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,13 +292,13 @@ bracket_arg -> open_bracket container_expr close_bracket : build_access_arg('$1'
292292
bracket_arg -> open_bracket container_expr ',' close_bracket : build_access_arg('$1', '$2', '$4').
293293
bracket_arg -> open_bracket container_expr ',' container_args close_bracket : error_too_many_access_syntax('$3').
294294

295-
bracket_expr -> dot_bracket_identifier bracket_arg : build_access(build_no_parens('$1', nil), '$2').
295+
bracket_expr -> dot_bracket_identifier bracket_arg : build_access(build_no_parens('$1', nil), meta_with_from_brackets('$2')).
296296
bracket_expr -> access_expr bracket_arg : build_access('$1', meta_with_from_brackets('$2')).
297297

298298
bracket_at_expr -> at_op_eol dot_bracket_identifier bracket_arg :
299-
build_access(build_unary_op('$1', build_no_parens('$2', nil)), '$3').
299+
build_access(build_unary_op('$1', build_no_parens('$2', nil)), meta_with_from_brackets('$3')).
300300
bracket_at_expr -> at_op_eol access_expr bracket_arg :
301-
build_access(build_unary_op('$1', '$2'), '$3').
301+
build_access(build_unary_op('$1', '$2'), meta_with_from_brackets('$3')).
302302

303303
%% Blocks
304304

lib/elixir/test/elixir/kernel/tracers_test.exs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,35 @@ defmodule Kernel.TracersTest do
217217
assert meta[:from_interpolation]
218218
end
219219

220+
test "traces bracket access" do
221+
compile_string("""
222+
foo = %{bar: 3}
223+
foo[:bar]
224+
""")
225+
226+
assert_receive {{:remote_function, meta, Access, :get, 2}, _env}
227+
assert meta[:from_brackets]
228+
229+
compile_string("""
230+
defmodule Foo do
231+
@foo %{bar: 3}
232+
def a() do
233+
@foo[:bar]
234+
end
235+
end
236+
""")
237+
238+
assert_receive {{:remote_function, meta, Access, :get, 2}, _env}
239+
assert meta[:from_brackets]
240+
241+
compile_string("""
242+
%{bar: 3}[:bar]
243+
""")
244+
245+
assert_receive {{:remote_function, meta, Access, :get, 2}, _env}
246+
assert meta[:from_brackets]
247+
end
248+
220249
"""
221250
# Make sure this module is compiled with column information
222251
defmodule MacroWithColumn do

0 commit comments

Comments
 (0)