どうも、お久しぶり。
えいやです。
GOA(v1.4.0)の生成するコードでちょっとおかしいんじゃないのかなー?というのがあったので共有します。
goagenがビルドが通らないコードを吐くケース
具体的には、
- 必須じゃない要素を使うと、ポインタ型と値型の対応が逆になっているのか、ビルドエラー
- ArrayOfを使うと、コードの生成が中途半端で終わってビルドエラー
1では、strConv.Itoa()に*int型を突っ込もうとしたり、*stringを[]byteいキャストしようとしたりして型違反エラー。
2では、定義したけど使っていない変数がでてきて静的チェック違反。
発生するエラーメッセージは以下のようなもの
# github.com/aya-eiya/goa-test/apps/app
apps/app/controllers.go:72:2: rawArrs declared and not used
# github.com/aya-eiya/goa-test/apps/client
apps/client/my_resorce.go:63:28: cannot use payload.IntVal (type *int) as type int in argument to strconv.Itoa
実際のコードを含むプロジェクトの例を以下に置いときます。
当該問題について、Issueを報告し、PRを投げています。
PRでは2つの問題のうち、片方、ポインタ型の問題を解決しています。
PRの取り込みが遅いようなら、もう一つの問題も解消して一つにまとめておこうかと思います。
※ Masterに取り込まれました。