"-spec()" を渡すために Erlang Mixer ライブラリ ( https://github.com/opscode/mixer ) を拡張しようとしています。モジュールに追加する機能の行。しかし、erlc がコアの erlang コードに仕様をどのように配置するかについては不明です。
私は本当に単純な(テスト)モジュールから始めました:
-module(mix1).
-export([square/1]).
-spec(square(number()) -> number()).
square(X) -> X * X.
そして、「erlc +debug_info -S mix1.erl」でコンパイルし、これを取得しました(module_info関数は削除されました):
{module, mix1}. %% version = 0
{exports, [{module_info,0},{module_info,1},{square,1}]}.
{attributes, []}.
{labels, 7}.
{function, square, 1, 2}.
{label,1}.
{line,[{location,"mix1.erl",7}]}.
{func_info,{atom,mix1},{atom,square},1}.
{label,2}.
{line,[{location,"mix1.erl",8}]}.
{gc_bif,'*',{f,0},1,[{x,0},{x,0}],{x,0}}.
return.
「-spec()」がどのように変換されているかを理解しようとしていますが、そこに表示されません。アイデアはありますか? 何が欠けていますか。ここでの最終的な目標は、これを解析変換に使用することです。