Skip to content

Commit 30f73b1

Browse files
committed
fix: don't use Code.ensure_compiled
1 parent 488ba55 commit 30f73b1

File tree

2 files changed

+15
-35
lines changed

2 files changed

+15
-35
lines changed

lib/mix/tasks/spark.formatter.ex

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,6 @@ if Code.ensure_loaded?(Sourceror) do
2828

2929
locals_without_parens =
3030
Enum.flat_map(extensions, fn extension_mod ->
31-
case Code.ensure_compiled(extension_mod) do
32-
{:module, _module} ->
33-
:ok
34-
35-
other ->
36-
error_msg =
37-
if Mix.Project.umbrella?() do
38-
"""
39-
Error ensuring extension compiled: #{inspect(other)}
40-
41-
You are running this task from an umbrella project root.
42-
Try running this task from within a sub-app directory, or compile the project first:
43-
cd apps/<your_app> && mix spark.formatter --extensions #{opts[:extensions]}
44-
"""
45-
else
46-
"Error ensuring extension compiled #{inspect(other)}"
47-
end
48-
49-
raise error_msg
50-
end
51-
5231
all_entity_builders_everywhere(
5332
extension_mod.sections(),
5433
extension_mod.dsl_patches(),

lib/spark/formatter.ex

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ if Code.ensure_loaded?(Sourceror) do
103103
false ->
104104
case get_extensions(body, config) do
105105
{:ok, extensions, type, using} ->
106-
replacement = format_resource(body, extensions, config, type, using)
106+
replacement = format_resource(body, extensions, config, type, using, opts)
107107

108108
patches =
109109
body
@@ -135,7 +135,7 @@ if Code.ensure_loaded?(Sourceror) do
135135
patches
136136
end
137137

138-
defp format_resource(body, extensions, config, _type, using) do
138+
defp format_resource(body, extensions, config, _type, using, opts) do
139139
sections =
140140
extensions
141141
|> Enum.flat_map(fn extension ->
@@ -179,14 +179,14 @@ if Code.ensure_loaded?(Sourceror) do
179179
|> Enum.map(&elem(&1, 0))
180180
|> then(fn sections ->
181181
if config[:remove_parens?] do
182-
de_paren(sections, Enum.flat_map(extensions, & &1.sections()), extensions)
182+
de_paren(sections, Enum.flat_map(extensions, & &1.sections()), extensions, opts)
183183
else
184184
sections
185185
end
186186
end)
187187
end
188188

189-
defp de_paren(actual_sections, dsl_sections, extensions) do
189+
defp de_paren(actual_sections, dsl_sections, extensions, opts) do
190190
actual_sections
191191
|> Enum.map(fn
192192
{name, meta, body} ->
@@ -195,16 +195,18 @@ if Code.ensure_loaded?(Sourceror) do
195195
{name, meta, body}
196196

197197
section ->
198-
{name, meta, de_paren_section(body, section, extensions)}
198+
{name, meta, de_paren_section(body, section, extensions, opts)}
199199
end
200200

201201
other ->
202202
other
203203
end)
204204
end
205205

206-
defp de_paren_section(body, section, extensions) do
207-
builders = all_entity_builders([section], extensions)
206+
defp de_paren_section(body, section, extensions, opts) do
207+
locals_without_parens = Keyword.get(opts, :locals_without_parens, [])
208+
209+
builders = all_entity_builders([section], extensions) ++ locals_without_parens
208210

209211
Macro.prewalk(body, fn
210212
{func, meta, body} = node when is_atom(func) ->
@@ -285,14 +287,13 @@ if Code.ensure_loaded?(Sourceror) do
285287
[]
286288
end
287289
|> List.wrap()
290+
|> Enum.filter(&is_atom/1)
288291
|> Enum.flat_map(fn extension ->
289-
case is_atom(extension) and Code.ensure_compiled(extension) do
290-
{:module, module} ->
291-
if Spark.implements_behaviour?(module, Spark.Dsl.Extension) do
292-
[module]
293-
else
294-
[]
295-
end
292+
if Code.ensure_loaded?(module) and Spark.implements_behaviour?(module, Spark.Dsl.Extension) do
293+
[module]
294+
else
295+
[]
296+
end
296297

297298
_ ->
298299
[]

0 commit comments

Comments
 (0)