1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ZEAM開発ログ v.0.4.12 マクロからコンパイルエラーやウォーニングを生成する

Last updated at Posted at 2018-09-29

ZACKYこと山崎進です。

fukuoka.ex もくもく会が終わった翌日も,もりもり創作意欲が湧いているので,書き綴ってみたいと思います。今回は小ネタで,マクロからコンパイルエラーやウォーニングを生成する方法について調べてみました。

「ZEAM開発ログ 目次」はこちら

マクロからウォーニングを生成してみる

defmodule Foo do
  defmacro raise_warn do
    :elixir_errors.warn __ENV__.line, __ENV__.file, "warning"
  end
end

結果

$ iex -S mix
iex(1)> require Foo
Foo
iex(2)> Foo.raise_warn
warning: warning
  iex:2

:ok
iex(3)> 

マクロからエラーを生成してみる

defmodule Foo do
  defmacro raise_error do
    :elixir_errors.parse_error __ENV__.line, __ENV__.file, "error", <<>>
  end
end

結果

$ iex -S mix
iex(1)> require Foo
Foo
iex(2)> Foo.raise_error
** (TokenMissingError) iex:2: error
    expanding macro: Foo.raise_error/0
    iex:2: (file)
iex(3)> 

エラーはちょっと「コレジャナイ感」がありますね。。。

次回は「ZEAM開発ログ v.0.4.13 マクロを使って micro Elixir のフロントエンドを作ってみる (野望編)」をお届けします。お楽しみに!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?