Current section
Files
Jump to
Current section
Files
lib/zig.parser/param_decl.ex
defmodule Zig.Parser.ParamDecl do
defstruct [
:name,
:doc_comment,
:type,
comptime: false,
noalias: false
]
def post_traverse(rest, [{:ParamDecl, args}], context, _, _) do
{rest, [parse(args)], context}
end
defp parse([{:doc_comment, comment} | rest]) do
%{parse(rest) | doc_comment: comment}
end
defp parse([:comptime | rest]), do: %{parse(rest) | comptime: true}
defp parse([:noalias | rest]), do: %{parse(rest) | noalias: true}
defp parse([identifier, :COLON | rest]), do: %{parse_type(rest) | name: identifier}
defp parse([type]), do: parse_type([type])
defp parse_type([:...]), do: %__MODULE__{type: :...}
defp parse_type([type]), do: %__MODULE__{type: type}
end