Skip to content

Commit 0a33de6

Browse files
committed
Allow list of spec in Process.info/2
1 parent 3419e0d commit 0a33de6

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

lib/elixir/lib/process.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ defmodule Process do
369369
370370
See http://www.erlang.org/doc/man/erlang.html#process_info-2 for more info.
371371
"""
372-
@spec info(pid, atom) :: {atom, term} | nil
372+
@spec info(pid, atom | [atom]) :: {atom, term} | [{atom, term}] | nil
373373
def info(pid, spec)
374374

375375
def info(pid, :registered_name) do
@@ -380,7 +380,7 @@ defmodule Process do
380380
end
381381
end
382382

383-
def info(pid, spec) when is_atom(spec) do
383+
def info(pid, spec) when is_atom(spec) or is_list(spec) do
384384
nillify :erlang.process_info(pid, spec)
385385
end
386386

lib/elixir/test/elixir/process_test.exs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,33 @@ defmodule ProcessTest do
1515
end
1616

1717
test "info/2" do
18-
pid = spawn fn -> end
18+
pid = spawn fn -> :timer.sleep(1000) end
19+
assert Process.info(pid, :priority) == {:priority, :normal}
20+
assert Process.info(pid, [:priority]) == [priority: :normal]
21+
1922
Process.exit(pid, :kill)
2023
assert Process.info(pid, :backtrace) == nil
24+
assert Process.info(pid, [:backtrace, :status]) == nil
2125
end
2226

2327
test "info/2 with registered name" do
2428
pid = spawn fn -> end
2529
Process.exit(pid, :kill)
2630
assert Process.info(pid, :registered_name) ==
2731
nil
32+
assert Process.info(pid, [:registered_name]) ==
33+
nil
2834

2935
assert Process.info(self, :registered_name) ==
3036
{:registered_name, []}
37+
assert Process.info(self, [:registered_name]) ==
38+
[registered_name: []]
3139

3240
Process.register(self, __MODULE__)
3341
assert Process.info(self, :registered_name) ==
3442
{:registered_name, __MODULE__}
43+
assert Process.info(self, [:registered_name]) ==
44+
[registered_name: __MODULE__]
3545
end
3646

3747
test "exit(pid, :normal) does not cause the target process to exit" do

0 commit comments

Comments
 (0)