@@ -50,32 +50,16 @@ defmodule ElixirLS.LanguageServer.Providers.Completion.Reducers.Struct do
50
50
end
51
51
end
52
52
53
- defp find_struct_fields ( hint , text_before , env , buffer_metadata ) do
54
- % State.Env {
55
- module: module ,
56
- vars: vars ,
57
- attributes: attributes ,
58
- aliases: aliases
59
- } = env
60
-
61
- % Metadata {
62
- structs: structs ,
63
- mods_funs_to_positions: mods_funs ,
64
- types: metadata_types ,
65
- specs: specs
66
- } = buffer_metadata
67
-
68
- env = % ElixirSense.Core.Binding {
69
- attributes: attributes ,
70
- variables: vars ,
71
- structs: structs ,
72
- functions: env . functions ,
73
- macros: env . macros ,
74
- current_module: module ,
75
- specs: specs ,
76
- types: metadata_types ,
77
- mods_funs: mods_funs
78
- }
53
+ defp find_struct_fields (
54
+ hint ,
55
+ text_before ,
56
+ % State.Env {
57
+ module: module ,
58
+ aliases: aliases
59
+ } = env ,
60
+ % Metadata { } = buffer_metadata
61
+ ) do
62
+ binding_env = ElixirSense.Core.Binding . from_env ( env , buffer_metadata )
79
63
80
64
case Source . which_struct ( text_before , module ) do
81
65
{ type , fields_so_far , elixir_prefix , var } ->
@@ -90,13 +74,13 @@ defmodule ElixirLS.LanguageServer.Providers.Completion.Reducers.Struct do
90
74
type
91
75
end
92
76
93
- type = Binding . expand ( env , { :struct , [ ] , type , var } )
77
+ type = Binding . expand ( binding_env , { :struct , [ ] , type , var } )
94
78
95
79
result = get_fields ( buffer_metadata , type , hint , fields_so_far )
96
80
{ result , if ( fields_so_far == [ ] , do: :maybe_struct_update ) }
97
81
98
82
{ :map , fields_so_far , var } ->
99
- var = Binding . expand ( env , var )
83
+ var = Binding . expand ( binding_env , var )
100
84
101
85
result = get_fields ( buffer_metadata , var , hint , fields_so_far )
102
86
{ result , if ( fields_so_far == [ ] , do: :maybe_struct_update ) }
0 commit comments