@@ -38,36 +38,37 @@ defmodule ElixirLS.LanguageServer.Providers.CodeLens.Test do
38
38
|> Enum . map ( fn { _k , v } -> v end )
39
39
|> List . flatten ( )
40
40
41
- for func <- runnable_functions do
42
- for { line , _col } <- calls_to ( calls_list , func ) ,
43
- is_test_module? ( metadata . lines_to_env , line ) do
44
- build_function_test_code_lens ( func , file_path , line )
45
- end
41
+ lines_to_env_list = Map . to_list ( metadata . lines_to_env )
42
+
43
+ for func <- runnable_functions ,
44
+ { line , _col } <- calls_to ( calls_list , func ) ,
45
+ is_test_module? ( lines_to_env_list , line ) do
46
+ build_function_test_code_lens ( func , file_path , line )
46
47
end
47
- |> List . flatten ( )
48
48
end
49
49
50
50
defp is_test_module? ( lines_to_env ) , do: is_test_module? ( lines_to_env , :infinity )
51
51
52
- defp is_test_module? ( lines_to_env , line ) when is_map ( lines_to_env ) do
53
- lines_to_env
54
- |> Map . to_list ( )
55
- |> is_test_module? ( line )
56
- end
57
-
58
52
defp is_test_module? ( lines_to_env , line ) when is_list ( lines_to_env ) do
59
53
lines_to_env
60
- |> Enum . filter ( fn { env_line , _env } -> env_line < line end )
61
- |> List . last ( )
54
+ |> Enum . max_by ( fn
55
+ { env_line , _env } when env_line < line -> env_line
56
+ _ -> - 1
57
+ end )
62
58
|> elem ( 1 )
63
59
|> Map . get ( :imports )
64
60
|> Enum . any? ( fn module -> module == ExUnit.Case end )
65
61
end
66
62
67
63
defp calls_to ( calls_list , { function , arity } ) do
68
- calls_list
69
- |> Enum . filter ( fn call_info -> call_info . func == function and call_info . arity === arity end )
70
- |> Enum . map ( fn call -> call . position end )
64
+ for call_info <- calls_list ,
65
+ call_info . func == function and call_info . arity === arity do
66
+ call_info . position
67
+ end
68
+
69
+ # calls_list
70
+ # |> Enum.filter(fn call_info -> call_info.func == function and call_info.arity === arity end)
71
+ # |> Enum.map(fn call -> call.position end)
71
72
end
72
73
73
74
defp build_test_module_code_lens ( file_path , { module , line } ) do
0 commit comments