Skip to content

Elixir code output needs to be formatted and some atoms need double quotes #30

@eksperimental

Description

@eksperimental

Hi @erszcz, we talked over the Elixir Forum,
I will be reporting some of the stuff that I find difficult to deal with Gradient

This is my project and commit
https://github.com/eksperimental/beam_langs_meta_data/tree/26ecd958475bedd5c0e4204814e7437484acdff4

mix gradient give me this:

lib/beam_langs_meta_data.ex: The map on line 242 is expected to have type %{required(:latest) => version_string(), required(:releases) => nonempty_keyword(atom(), elixir_release_data())} but it has type %{required(:latest) => binary(), required(:releases) => nonempty_list({:1.13.0, %{optional(:assets) => nonempty_list(%{optional(:content_type) => binary(), optional(:created_at) => binary(), optional(:download_url) => binary(), optional(:id) => 50943932, optional(:label) => nil, optional(:name) => binary(), optional(:node_id) => binary(), optional(:size) => 2023670, optional(:state) => binary(), optional(:url) => binary()} | %{optional(:content_type) => binary(), optional(:created_at) => binary(), optional(:download_url) => binary(), optional(:id) => 50943934, optional(:label) => nil, optional(:name) => binary(), optional(:node_id) => binary(), optional(:size) => 6230020, optional(:state) => binary(), optional(:url) => binary()}), optional(:assets_url) => binary(), optional(:body) => binary(), optional(:created_at) => binary(), optional(:draft) => false, optional(:id) => 54599470, optional(:name) => binary(), optional(:node_id) => binary(), optional(:prerelease) => false, optional(:published_at) => binary(), optional(:release_url) => binary(), optional(:tag_name) => binary(), optional(:tarball_url) => binary(), optional(:target_commitish) => binary(), optional(:upload_url) => binary(), optional(:url) => binary(), optional(:zipball_url) => binary()}} | {:1.13.0-rc.0, %{optional(:assets) => nonempty_list(%{optional(:content_type) => binary(), optional(:created_at) => binary(), optional(:download_url) => binary(), optional(:id) => 48381634, optional(:label) => nil, optional(:name) => binary(), optional(:node_id) => binary(), optional(:size) => 2020048, optional(:state) => binary(), optional(:url) => binary()} | %{optional(:content_type) => binary(), optional(:created_at) => binary(), optional(:download_url) => binary(), optional(:id) => 48381646, optional(:label) => nil, optional(:name) => binary(), optional(:node_id) => binary(), optional(:size) => 6223789, optional(:state) => binary(), optional(:url) => binary()}), optional(:assets_url) => binary(), optional(:body) => binary(), optional(:created_at) => binary(), optional(:draft) => false, optional(:id) => 52477144, optional(:name) => binary(), optional(:node_id) => binary(), optional(:prerelease) => true, optional(:published_at) => binary(), optional(:release_url) => binary(), optional(:tag_name) => binary(), optional(:tarball_url) => binary(), optional(:target_commitish) => binary(), optional(:upload_url) => binary(), optional(:url) => binary(), optional(:zipball_url) => binary()}} | {:1.13.0-rc.1, %{optional(:assets) => nonempty_list(%{optional(:content_type) => binary(), optional(:created_at) => binary(), optional(:download_url) => binary(), optional(:id) => 49611887, optional(:label) => nil, optional(:name) => binary(), optional(:node_id) => binary(), optional(:size) => 2016743, optional(:state) => binary(), optional(:url) => binary()} | %{optional(:content_type) => binary(), optional(:created_at) => binary(), optional(:download_url) => binary(), optional(:id) => 49611889, optional(:label) => nil, optional(:name) => binary(), optional(:node_id) => binary(), optional(:size) => 6226682, optional(:state) => binary(), optional(:url) => binary()}), optional(:assets_url) => binary(), optional(:body) => binary(), optional(:created_at) => binary(), optional(:draft) => false, optional(:id) => 53503802, optional(:name) => binary(), optional(:node_id) => binary(), optional(:prerelease) => true, optional(:published_at) => binary(), optional(:release_url) => binary(), optional(:tag_name) => binary(), optional(:tarball_url) => binary(), optional(:target_commitish) => binary(), optional(:upload_url) => binary(), optional(:url) => binary(), optional(:zipball_url) => binary()}})}

There are two issues,

  1. Impossible to read all in one line. The output should be formatted.
  2. Some atoms need double quotes, such as :1.13.0 they should be represented as :"1.13.0"

if that is fixed, the report should look like this.

%{
  required(:latest) => binary(),
  required(:releases) =>
    nonempty_list(
      {:"1.13.0",
       %{
         optional(:assets) =>
           nonempty_list(
             %{
               optional(:content_type) => binary(),
               optional(:created_at) => binary(),
               optional(:download_url) => binary(),
               optional(:id) => 50_943_932,
               optional(:label) => nil,
               optional(:name) => binary(),
               optional(:node_id) => binary(),
               optional(:size) => 2_023_670,
               optional(:state) => binary(),
               optional(:url) => binary()
             }
             | %{
                 optional(:content_type) => binary(),
                 optional(:created_at) => binary(),
                 optional(:download_url) => binary(),
                 optional(:id) => 50_943_934,
                 optional(:label) => nil,
                 optional(:name) => binary(),
                 optional(:node_id) => binary(),
                 optional(:size) => 6_230_020,
                 optional(:state) => binary(),
                 optional(:url) => binary()
               }
           ),
         optional(:assets_url) => binary(),
         optional(:body) => binary(),
         optional(:created_at) => binary(),
         optional(:draft) => false,
         optional(:id) => 54_599_470,
         optional(:name) => binary(),
         optional(:node_id) => binary(),
         optional(:prerelease) => false,
         optional(:published_at) => binary(),
         optional(:release_url) => binary(),
         optional(:tag_name) => binary(),
         optional(:tarball_url) => binary(),
         optional(:target_commitish) => binary(),
         optional(:upload_url) => binary(),
         optional(:url) => binary(),
         optional(:zipball_url) => binary()
       }}
      | {:"1.13.0-rc.0",
         %{
           optional(:assets) =>
             nonempty_list(
               %{
                 optional(:content_type) => binary(),
                 optional(:created_at) => binary(),
                 optional(:download_url) => binary(),
                 optional(:id) => 48_381_634,
                 optional(:label) => nil,
                 optional(:name) => binary(),
                 optional(:node_id) => binary(),
                 optional(:size) => 2_020_048,
                 optional(:state) => binary(),
                 optional(:url) => binary()
               }
               | %{
                   optional(:content_type) => binary(),
                   optional(:created_at) => binary(),
                   optional(:download_url) => binary(),
                   optional(:id) => 48_381_646,
                   optional(:label) => nil,
                   optional(:name) => binary(),
                   optional(:node_id) => binary(),
                   optional(:size) => 6_223_789,
                   optional(:state) => binary(),
                   optional(:url) => binary()
                 }
             ),
           optional(:assets_url) => binary(),
           optional(:body) => binary(),
           optional(:created_at) => binary(),
           optional(:draft) => false,
           optional(:id) => 52_477_144,
           optional(:name) => binary(),
           optional(:node_id) => binary(),
           optional(:prerelease) => true,
           optional(:published_at) => binary(),
           optional(:release_url) => binary(),
           optional(:tag_name) => binary(),
           optional(:tarball_url) => binary(),
           optional(:target_commitish) => binary(),
           optional(:upload_url) => binary(),
           optional(:url) => binary(),
           optional(:zipball_url) => binary()
         }}
      | {:"1.13.0-rc.1",
         %{
           optional(:assets) =>
             nonempty_list(
               %{
                 optional(:content_type) => binary(),
                 optional(:created_at) => binary(),
                 optional(:download_url) => binary(),
                 optional(:id) => 49_611_887,
                 optional(:label) => nil,
                 optional(:name) => binary(),
                 optional(:node_id) => binary(),
                 optional(:size) => 2_016_743,
                 optional(:state) => binary(),
                 optional(:url) => binary()
               }
               | %{
                   optional(:content_type) => binary(),
                   optional(:created_at) => binary(),
                   optional(:download_url) => binary(),
                   optional(:id) => 49_611_889,
                   optional(:label) => nil,
                   optional(:name) => binary(),
                   optional(:node_id) => binary(),
                   optional(:size) => 6_226_682,
                   optional(:state) => binary(),
                   optional(:url) => binary()
                 }
             ),
           optional(:assets_url) => binary(),
           optional(:body) => binary(),
           optional(:created_at) => binary(),
           optional(:draft) => false,
           optional(:id) => 53_503_802,
           optional(:name) => binary(),
           optional(:node_id) => binary(),
           optional(:prerelease) => true,
           optional(:published_at) => binary(),
           optional(:release_url) => binary(),
           optional(:tag_name) => binary(),
           optional(:tarball_url) => binary(),
           optional(:target_commitish) => binary(),
           optional(:upload_url) => binary(),
           optional(:url) => binary(),
           optional(:zipball_url) => binary()
         }}
    )
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions