@@ -105,6 +105,26 @@ defmodule ElixirLS.LanguageServer.Providers.Definition.LocatorTest do
105
105
assert read_line ( file , { line , column } ) =~ "function_arity_zero"
106
106
end
107
107
108
+ test "find definition of functions from current buffer imports" do
109
+ buffer = """
110
+ defmodule MyModuleExports do
111
+ def exported(a), do: a
112
+ end
113
+
114
+ defmodule MyModule do
115
+ import MyModuleExports
116
+ exported(1)
117
+ #^
118
+ end
119
+ """
120
+
121
+ % Location { type: :function , file: file , line: line , column: column } =
122
+ Locator . definition ( buffer , 7 , 4 )
123
+
124
+ assert file == nil
125
+ assert { line , column } == { 2 , 3 }
126
+ end
127
+
108
128
test "find definition of functions from aliased modules" do
109
129
buffer = """
110
130
defmodule MyModule do
@@ -121,6 +141,26 @@ defmodule ElixirLS.LanguageServer.Providers.Definition.LocatorTest do
121
141
assert read_line ( file , { line , column } ) =~ "function_arity_one"
122
142
end
123
143
144
+ test "find definition of functions from current buffer aliases" do
145
+ buffer = """
146
+ defmodule MyModuleExports do
147
+ def exported(a), do: a
148
+ end
149
+
150
+ defmodule MyModule do
151
+ alias MyModuleExports, as: Foo
152
+ Foo.exported(1)
153
+ # ^
154
+ end
155
+ """
156
+
157
+ % Location { type: :function , file: file , line: line , column: column } =
158
+ Locator . definition ( buffer , 7 , 8 )
159
+
160
+ assert file == nil
161
+ assert { line , column } == { 2 , 3 }
162
+ end
163
+
124
164
test "find definition of macros from required modules" do
125
165
buffer = """
126
166
defmodule MyModule do
@@ -137,6 +177,28 @@ defmodule ElixirLS.LanguageServer.Providers.Definition.LocatorTest do
137
177
assert read_line ( file , { line , column } ) =~ "some"
138
178
end
139
179
180
+ test "find definition of macros from current buffer requires" do
181
+ buffer = """
182
+ defmodule MyModuleExports do
183
+ defmacro exported(a) do
184
+ quote do: unquote(a)
185
+ end
186
+ end
187
+
188
+ defmodule MyModule do
189
+ require MyModuleExports, as: Foo
190
+ Foo.exported(1)
191
+ # ^
192
+ end
193
+ """
194
+
195
+ % Location { type: :macro , file: file , line: line , column: column } =
196
+ Locator . definition ( buffer , 9 , 8 )
197
+
198
+ assert file == nil
199
+ assert { line , column } == { 2 , 3 }
200
+ end
201
+
140
202
test "find definition of functions piped from aliased modules" do
141
203
buffer = """
142
204
defmodule MyModule do
0 commit comments