Skip to content

Commit 3a7f43b

Browse files
committed
More fixes
1 parent 8047f3d commit 3a7f43b

File tree

3 files changed

+29
-36
lines changed

3 files changed

+29
-36
lines changed

lib/mix/lib/mix/compilers/elixir.ex

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -921,26 +921,21 @@ defmodule Mix.Compilers.Elixir do
921921
protocols_and_impls,
922922
timestamp
923923
) do
924-
if modules == %{} and sources == %{} do
925-
File.rm(manifest)
926-
else
927-
File.mkdir_p!(Path.dirname(manifest))
928-
929-
term =
930-
{@manifest_vsn, modules, sources, exports, parents, cache_key, deps_config, project_mtime,
931-
config_mtime, protocols_and_impls}
924+
File.mkdir_p!(Path.dirname(manifest))
932925

933-
manifest_data = :erlang.term_to_binary(term, [:compressed])
934-
File.write!(manifest, manifest_data)
935-
File.touch!(manifest, timestamp)
936-
delete_checkpoint(manifest)
926+
term =
927+
{@manifest_vsn, modules, sources, exports, parents, cache_key, deps_config, project_mtime,
928+
config_mtime, protocols_and_impls}
937929

938-
# Since Elixir is a dependency itself, we need to touch the lock
939-
# so the current Elixir version, used to compile the files above,
940-
# is properly stored.
941-
Mix.Dep.ElixirSCM.update()
942-
end
930+
manifest_data = :erlang.term_to_binary(term, [:compressed])
931+
File.write!(manifest, manifest_data)
932+
File.touch!(manifest, timestamp)
933+
delete_checkpoint(manifest)
943934

935+
# Since Elixir is a dependency itself, we need to touch the lock
936+
# so the current Elixir version, used to compile the files above,
937+
# is properly stored.
938+
Mix.Dep.ElixirSCM.update()
944939
:ok
945940
end
946941

@@ -1105,7 +1100,7 @@ defmodule Mix.Compilers.Elixir do
11051100

11061101
state =
11071102
{modules, exports, sources, changed, pending_modules, stale_exports,
1108-
maybe_consolidate(consolidation, modules, opts)}
1103+
maybe_consolidate(consolidation, modules, pending_modules, opts)}
11091104

11101105
{:ok, state}
11111106
end
@@ -1321,16 +1316,18 @@ defmodule Mix.Compilers.Elixir do
13211316

13221317
defp protocols_and_impls(), do: {%{}, %{}}
13231318

1324-
defp maybe_consolidate({:off, _, _}, _, _) do
1319+
defp maybe_consolidate({:off, _, _}, _, _, _) do
13251320
protocols_and_impls()
13261321
end
13271322

13281323
defp maybe_consolidate(
13291324
{on_or_force, old_protocols_and_impls, protocols_and_impls},
13301325
modules,
1326+
pending_modules,
13311327
opts
13321328
) do
13331329
protocols_and_impls = protocols_and_impls_from_modules(modules, protocols_and_impls)
1330+
protocols_and_impls = protocols_and_impls_from_modules(pending_modules, protocols_and_impls)
13341331

13351332
Mix.Compilers.Protocol.compile(
13361333
on_or_force == :force,

lib/mix/test/mix/tasks/compile.protocols_test.exs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ defmodule Mix.Tasks.Compile.ProtocolsTest do
1919
end
2020
""")
2121

22-
assert compile_elixir_and_protocols() == :ok
22+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
2323
mark_as_old!("_build/dev/lib/sample/consolidated/Elixir.Compile.Protocol.beam")
2424

2525
# Implement a local protocol
@@ -29,21 +29,21 @@ defmodule Mix.Tasks.Compile.ProtocolsTest do
2929
end
3030
""")
3131

32-
assert compile_elixir_and_protocols() == :ok
32+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
3333

3434
assert mark_as_old!("_build/dev/lib/sample/consolidated/Elixir.Compile.Protocol.beam") !=
3535
@old
3636

3737
# Delete a local implementation
3838
File.rm!("lib/impl.ex")
39-
assert compile_elixir_and_protocols() == :ok
39+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
4040

4141
assert mark_as_old!("_build/dev/lib/sample/consolidated/Elixir.Compile.Protocol.beam") !=
4242
@old
4343

4444
# Delete a local protocol
4545
File.rm!("lib/protocol.ex")
46-
assert compile_elixir_and_protocols() == :noop
46+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
4747
refute File.regular?("_build/dev/lib/sample/consolidated/Elixir.Compile.Protocol.beam")
4848
end)
4949
end
@@ -67,7 +67,7 @@ defmodule Mix.Tasks.Compile.ProtocolsTest do
6767
end
6868
""")
6969

70-
assert compile_elixir_and_protocols() == :ok
70+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
7171
mark_as_old!("_build/dev/lib/sample/consolidated/Elixir.Compile.Protocol.beam")
7272
File.rm!("lib/protocol.ex")
7373

@@ -77,11 +77,12 @@ defmodule Mix.Tasks.Compile.ProtocolsTest do
7777
end
7878
""")
7979

80-
assert compile_elixir_and_protocols() == :noop
80+
purge_protocol(Compile.Protocol)
81+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
8182

8283
# Delete a local protocol
8384
File.rm!("lib/protocol.ex")
84-
assert compile_elixir_and_protocols() == :noop
85+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
8586
refute File.regular?("_build/dev/lib/sample/consolidated/Elixir.Compile.Protocol.beam")
8687
end)
8788
end
@@ -95,7 +96,7 @@ defmodule Mix.Tasks.Compile.ProtocolsTest do
9596
purge_protocol(String.Chars)
9697
mark_as_old!("_build/dev/lib/sample/consolidated/Elixir.String.Chars.beam")
9798

98-
assert compile_elixir_and_protocols() == :noop
99+
assert Mix.Tasks.Compile.Elixir.run([]) == {:noop, []}
99100
assert mtime("_build/dev/lib/sample/consolidated/Elixir.String.Chars.beam") == @old
100101

101102
# Implement a deps protocol
@@ -108,20 +109,20 @@ defmodule Mix.Tasks.Compile.ProtocolsTest do
108109
end
109110
""")
110111

111-
assert compile_elixir_and_protocols() == :ok
112+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
112113
assert mark_as_old!("_build/dev/lib/sample/consolidated/Elixir.String.Chars.beam") != @old
113114

114115
# Delete the local implementation
115116
File.rm!("lib/struct.ex")
116-
assert compile_elixir_and_protocols() == :ok
117+
assert Mix.Tasks.Compile.Elixir.run([]) == {:ok, []}
117118
assert mark_as_old!("_build/dev/lib/sample/consolidated/Elixir.String.Chars.beam") != @old
118119
end)
119120
end
120121

121122
test "consolidated protocols keep relative path to their source" do
122123
in_fixture("no_mixfile", fn ->
123124
Mix.Project.push(MixTest.Case.Sample)
124-
compile_elixir_and_protocols()
125+
Mix.Task.run("compile")
125126

126127
# Load consolidated
127128
:code.add_patha(~c"_build/dev/lib/sample/consolidated")
@@ -142,11 +143,6 @@ defmodule Mix.Tasks.Compile.ProtocolsTest do
142143
end)
143144
end
144145

145-
defp compile_elixir_and_protocols do
146-
Mix.Tasks.Compile.Elixir.run([])
147-
Mix.Tasks.Compile.Protocols.run([])
148-
end
149-
150146
defp mtime(path) do
151147
File.stat!(path).mtime
152148
end

lib/mix/test/mix/umbrella_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ defmodule Mix.UmbrellaTest do
569569

570570
Mix.Task.run("compile")
571571
assert File.regular?("_build/dev/lib/bar/consolidated/Elixir.Foo.beam")
572-
assert Mix.Tasks.Compile.Protocols.run([]) == :noop
572+
assert Mix.Tasks.Compile.Elixir.run([]) == {:noop, []}
573573

574574
# Mark protocol as outdated
575575
File.touch!("_build/dev/lib/bar/consolidated/Elixir.Foo.beam", {{2010, 1, 1}, {0, 0, 0}})

0 commit comments

Comments
 (0)