diff options
author | Ćukasz Samson <lukaszsamson@gmail.com> | 2023-05-04 13:01:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-04 13:01:34 +0200 |
commit | ccbdd63070bd80299a3231767880bc9fe10d4903 (patch) | |
tree | acae3f44bb663d3b3fd0424389b8d29a5db62263 /lib/iex/test/iex/autocomplete_test.exs | |
parent | ac15a185fc0be4f69112eb570a3043ae90ada942 (diff) | |
download | elixir-ccbdd63070bd80299a3231767880bc9fe10d4903.tar.gz |
Make map/struct field completion work in map update (#12455)
Diffstat (limited to 'lib/iex/test/iex/autocomplete_test.exs')
-rw-r--r-- | lib/iex/test/iex/autocomplete_test.exs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/iex/test/iex/autocomplete_test.exs b/lib/iex/test/iex/autocomplete_test.exs index 36190d576..dd4a5be42 100644 --- a/lib/iex/test/iex/autocomplete_test.exs +++ b/lib/iex/test/iex/autocomplete_test.exs @@ -418,6 +418,38 @@ defmodule IEx.AutocompleteTest do assert {:no, [], []} = expand(~c"%Unkown{path: \"foo\", unkno") end + test "completion for struct keys in update syntax" do + assert {:yes, ~c"", entries} = expand(~c"%URI{var | ") + assert ~c"path:" in entries + assert ~c"query:" in entries + + assert {:yes, ~c"", entries} = expand(~c"%URI{var | path: \"foo\",") + assert ~c"path:" not in entries + assert ~c"query:" in entries + + assert {:yes, ~c"ry: ", []} = expand(~c"%URI{var | path: \"foo\", que") + assert {:no, [], []} = expand(~c"%URI{var | path: \"foo\", unkno") + assert {:no, [], []} = expand(~c"%Unkown{var | path: \"foo\", unkno") + end + + test "completion for map keys in update syntax" do + eval("map = %{some: 1, other: :ok, another: \"qwe\"}") + # Code.Fragment.container_cursor_to_quoted returns + # {:%{}, [line: 1], [{:__cursor__, [line: 1], []}]} + # and `map` variable and map update AST is lost + # assert {:yes, ~c"", entries} = expand(~c"%{map | ") + # assert ~c"some:" in entries + # assert ~c"other:" in entries + + assert {:yes, ~c"", entries} = expand(~c"%{map | some: \"foo\",") + assert ~c"some:" not in entries + assert ~c"other:" in entries + + assert {:yes, ~c"er: ", []} = expand(~c"%{map | some: \"foo\", oth") + assert {:no, [], []} = expand(~c"%{map | some: \"foo\", unkno") + assert {:no, [], []} = expand(~c"%{unknown | some: \"foo\", unkno") + end + test "completion for struct var keys" do eval("struct = %IEx.AutocompleteTest.MyStruct{}") assert expand(~c"struct.my") == {:yes, ~c"_val", []} |