Skip to content

Commit 82cdc51

Browse files
author
José Valim
committed
Deprecate Record.import/2
This is part of the preparation for maps.
1 parent e855a85 commit 82cdc51

File tree

2 files changed

+5
-22
lines changed

2 files changed

+5
-22
lines changed

lib/elixir/lib/record.ex

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,8 @@ defmodule Record do
224224
225225
"""
226226
defmacro import(module, as: name) do
227+
IO.write :stderr, "Record.import/2 is deprecated and it will be removed in the following releases\n#{Exception.format_stacktrace}"
228+
227229
quote do
228230
module = unquote(module)
229231

@@ -509,7 +511,7 @@ defmodule Record do
509511
# converting record to keywords list.
510512
@doc false
511513
def to_keywords(name, _atom, fields, record, caller) do
512-
IO.write "#{name}(record) for private records returning a keyword list is deprecated\n#{Exception.format_stacktrace(caller.stacktrace)}"
514+
IO.write :stderr, "#{name}(record) for private records returning a keyword list is deprecated\n#{Exception.format_stacktrace(caller.stacktrace)}"
513515
{ var, extra } = cache_var(record)
514516

515517
keywords = Enum.map fields,
@@ -531,12 +533,12 @@ defmodule Record do
531533
def dispatch(name, atom, fields, record, args, caller) do
532534
cond do
533535
is_atom(args) ->
534-
IO.write "#{name}(record, field) for private records for retrieving a field is deprecated, please use pattern match instead\n#{Exception.format_stacktrace(caller.stacktrace)}"
536+
IO.write :stderr, "#{name}(record, field) for private records for retrieving a field is deprecated, please use pattern match instead\n#{Exception.format_stacktrace(caller.stacktrace)}"
535537
get(atom, fields, record, args)
536538
is_keyword(args) ->
537539
update(atom, fields, record, args, caller)
538540
is_list(args) ->
539-
IO.write "#{name}(record, fields) for private records for retrieving a list of fields is deprecated, please use pattern match instead\n#{Exception.format_stacktrace(caller.stacktrace)}"
541+
IO.write :stderr, "#{name}(record, fields) for private records for retrieving a list of fields is deprecated, please use pattern match instead\n#{Exception.format_stacktrace(caller.stacktrace)}"
540542
to_list(atom, fields, record, args)
541543
true ->
542544
raise ArgumentError, message: "expected arguments to be a compile time atom, list or keywords"

lib/elixir/test/elixir/record_test.exs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,6 @@ defrecord RecordTest.FileInfo,
66
defrecord RecordTest.SomeRecord, a: 0, b: &Dict.get/2
77
defrecord RecordTest.WithNoField, []
88

9-
## Record import
10-
11-
defmodule RecordTest.FileInfo.Helper do
12-
Record.import RecordTest.FileInfo, as: :file_info
13-
14-
def new do
15-
file_info
16-
end
17-
18-
def size(file_info(size: size)), do: size
19-
end
20-
219
## Dynamic names and overridable
2210

2311
name = RecordTest.DynamicName
@@ -27,8 +15,6 @@ defrecord name, a: 0, b: 1 do
2715
def update_b(_, _) do
2816
:not_optimizable
2917
end
30-
31-
Record.import __MODULE__, as: :self
3218
end
3319

3420
defmodule RecordTest.DynamicOpts do
@@ -162,11 +148,6 @@ defmodule RecordTest do
162148
end)
163149
end
164150

165-
test :import do
166-
assert RecordTest.FileInfo.Helper.new == RecordTest.FileInfo.new
167-
assert RecordTest.FileInfo.Helper.size(RecordTest.FileInfo.new(size: 100)) == 100
168-
end
169-
170151
test :record_with_functions_as_defaults do
171152
defrecord WithFun, fun: [&Kernel.is_atom/1]
172153
assert WithFun.new.fun == [&Kernel.is_atom/1]

0 commit comments

Comments
 (0)