zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

dialyxir.ex (2254B)


      1 defmodule Dialyxir.Formatter.Dialyxir do
      2   @moduledoc false
      3 
      4   @behaviour Dialyxir.Formatter
      5 
      6   @impl Dialyxir.Formatter
      7   def format(dialyzer_warning = {_tag, {file, line}, message}) do
      8     {warning_name, arguments} = message
      9     base_name = Path.relative_to_cwd(file)
     10 
     11     formatted =
     12       try do
     13         warning = warning(warning_name)
     14         string = warning.format_long(arguments)
     15 
     16         """
     17         #{base_name}:#{line}:#{warning_name}
     18         #{string}
     19         """
     20       rescue
     21         e ->
     22           message = """
     23           Unknown error occurred: #{inspect(e)}
     24           """
     25 
     26           wrap_error_message(message, dialyzer_warning)
     27       catch
     28         {:error, :unknown_warning, warning_name} ->
     29           message = """
     30           Unknown warning:
     31           #{inspect(warning_name)}
     32           """
     33 
     34           wrap_error_message(message, dialyzer_warning)
     35 
     36         {:error, :lexing, warning} ->
     37           message = """
     38           Failed to lex warning:
     39           #{inspect(warning)}
     40           """
     41 
     42           wrap_error_message(message, dialyzer_warning)
     43 
     44         {:error, :parsing, failing_string} ->
     45           message = """
     46           Failed to parse warning:
     47           #{inspect(failing_string)}
     48           """
     49 
     50           wrap_error_message(message, dialyzer_warning)
     51 
     52         {:error, :pretty_printing, failing_string} ->
     53           message = """
     54           Failed to pretty print warning:
     55           #{inspect(failing_string)}
     56           """
     57 
     58           wrap_error_message(message, dialyzer_warning)
     59 
     60         {:error, :formatting, code} ->
     61           message = """
     62           Failed to format warning:
     63           #{inspect(code)}
     64           """
     65 
     66           wrap_error_message(message, dialyzer_warning)
     67       end
     68 
     69     formatted <> String.duplicate("_", 80)
     70   end
     71 
     72   defp wrap_error_message(message, warning) do
     73     """
     74     Please file a bug in https://github.com/jeremyjh/dialyxir/issues with this message.
     75 
     76     #{message}
     77 
     78     Legacy warning:
     79     #{Dialyxir.Formatter.Dialyzer.format(warning)}
     80     """
     81   end
     82 
     83   defp warning(warning_name) do
     84     warnings = Dialyxir.Warnings.warnings()
     85 
     86     if Map.has_key?(warnings, warning_name) do
     87       Map.get(warnings, warning_name)
     88     else
     89       throw({:error, :unknown_warning, warning_name})
     90     end
     91   end
     92 end