Skip to content

Commit 6619e32

Browse files
author
José Valim
committed
Define missing Kernel functions
1 parent ebb867d commit 6619e32

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

lib/elixir/lib/kernel.ex

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1317,6 +1317,45 @@ defmodule Kernel do
13171317
"""
13181318
defmacro defp(name, args, guards, do: contents)
13191319

1320+
@doc """
1321+
Defines a macro with the given name and contents.
1322+
1323+
## Examples
1324+
1325+
defmodule MyLogic do
1326+
defmacro unless(expr, opts) do
1327+
quote do
1328+
if !unquote(expr), unquote(opts)
1329+
end
1330+
end
1331+
end
1332+
1333+
require MyLogic
1334+
MyLogic.unless false do
1335+
IO.puts "It works"
1336+
end
1337+
1338+
"""
1339+
defmacro defmacro(name, do: contents)
1340+
1341+
@doc """
1342+
The same as `def/4` but generates a macro.
1343+
"""
1344+
defmacro defmacro(name, args, guards, do: contents)
1345+
1346+
@doc """
1347+
Defines a macro that is private. Private macros
1348+
can only be accessible from the same module it is defined.
1349+
1350+
Check `defmacro/2` for more information
1351+
"""
1352+
defmacro defmacrop(name, do: contents)
1353+
1354+
@doc """
1355+
The same as `def/4` but generates a private macro.
1356+
"""
1357+
defmacro defmacrop(name, args, guards, do: contents)
1358+
13201359
@doc %B"""
13211360
Defines a record.
13221361

0 commit comments

Comments
 (0)