Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate types and type specs for all generated functions in aws-elixir and aws-erlang #109

Merged

Conversation

onno-vos-dev
Copy link
Member

@onno-vos-dev onno-vos-dev commented Mar 16, 2024

Description

Generate types and type specs for all generated functions in aws-elixir and aws-erlang

  • Generate common errors in order to unify types and reduce noise
  • Ensure that for Elixir, typedoc examples are considered code blocks
  • Erlang Type docs are not hoverable for now due to issues with 'rebar3 ex_doc'
    • Will follow up on this task
  • Increase Task.await/2 timeout

Follow up tasks

Tasks to follow up on:

  • aws_client() in aws-erlang is marked as opaque but this is not really true due to build_host/2. We should either fix this to be truly opaque or simply turn it into a regular type.
    • Due to this Dialyzer is not really happy with aws-erlang and while getting it down to 0 is likely gonna be a challenge, solving the above bring it down to 27 which is a lot more reasonable.
  • Add nowarn_unused_type to rebar.config in aws-erlang since some types are only used from comments (examples) and hence are "unused". Let's not flood the terminal with noise.

Generated code

Generated aws-elixir code as an example: comparison
Generated aws-erlang code as an example: comparison

Additional info

Related to #108 which I declined in favor of this one due to wrong branch naming.

Some additional screenshots

ElixirLS overview

Screenshot 2024-03-13 at 20 58 20

Erlang types overview

Screenshot 2024-03-16 at 11 45 27
Screenshot 2024-03-16 at 11 45 48

Copy link
Contributor

@philss philss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work, @onno-vos-dev!! 🎉 ❤️

I liked very much the way it is describing the type! I hope in the future we can include the entire type description in the type specs.

I added some minor points only, but consider it approved! 😺
Please don't forget to run the formatter :)

lib/aws_codegen/shapes.ex Outdated Show resolved Hide resolved
lib/aws_codegen/types.ex Outdated Show resolved Hide resolved
lib/aws_codegen/types.ex Outdated Show resolved Hide resolved
priv/post.ex.eex Outdated Show resolved Hide resolved
priv/rest.erl.eex Outdated Show resolved Hide resolved
priv/rest.ex.eex Outdated Show resolved Hide resolved
priv/rest.ex.eex Outdated Show resolved Hide resolved
test/aws_codegen_test.exs Show resolved Hide resolved
…ir and aws-erlang

- Generate common errors in order to unify types and reduce noise
- Ensure that for Elixir, typedoc examples are considered code blocks
- Erlang Type docs are not hoverable for now due to issues with 'rebar3 ex_doc'
  - Will follow up on this task
- Increase Task.await/2 timeout
@onno-vos-dev onno-vos-dev force-pushed the generate-types-and-type-specs-for-all-generated-code branch from 0faf06b to 70fdc8e Compare March 28, 2024 16:45
@onno-vos-dev onno-vos-dev merged commit 132386a into master Mar 28, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants