Open lukaszsamson opened 1 year ago
record AST
record typespec
{:"::", [],
[
{:userd, [], []},
{:{}, [line: 4],
[
:userd,
{:"::", [line: 0],
[
{:name, [line: 0], nil},
{{:., [line: 4], [String, :t]}, [line: 4], []}
]},
{:"::", [line: 0], [{:age, [line: 0], nil}, {:integer, [line: 4], []}]}
]}
]}
iex(1)> Code.Fragment.surround_context("record = user(age: 26)", {1, 12})
%{begin: {1, 10}, context: {:local_call, 'user'}, end: {1, 14}}
iex(2)> Code.Fragment.surround_context("record = D.user(age: 26)", {1, 12})
%{begin: {1, 10}, context: {:dot, {:alias, 'D'}, 'user'}, end: {1, 16}}
iex(3)> Code.Fragment.container_cursor_to_quoted("record = D.user(") {:ok,
{:=, [line: 1],
[
{:record, [line: 1], nil},
{{:., [line: 1], [{:__aliases__, [line: 1], [:D]}, :user]}, [line: 1],
[{:__cursor__, [line: 1], []}]}
]}}
iex(4)> Code.Fragment.container_cursor_to_quoted("record = user(")
{:ok,
{:=, [line: 1],
[
{:record, [line: 1], nil},
{:user, [line: 1], [{:__cursor__, [line: 1], []}]}
]}}
Collect fields in metadata builder. Fall back to typespec. Depends on Code.Fragment