問題タブ [dialyzer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - タイプ [string()] は空のリストをカバーしていますか?
文字列のリストになるが空のリストになる可能性のある型を定義する場合、次のように両方のケースを定義する必要がありますか?
またはこれで十分ですか:
elixir - PLT を作成するための dialyxir mix タスクは、エラーやテーブルの作成なしで終了します
私は、dialyxir を使用して、それが提供する混合タスクを通じてプロジェクトでダイアライザー分析を実行しようとしています。
依存関係に追加し、README に従ってコンパイルしました。
を実行するmix dialyxir.plt
と、エラーは報告されませんが、テーブルを作成せずに終了します。
問題は、これをどのようにデバッグするかです。
types - Erlang Dialyzer が次のコードで型エラーを検出できないのはなぜですか?
free_vars_in_dterm({var, V}) -> {var, V};
明らかにタイプ チェックはできませんが、dialyzer はすべて問題ないと言っています。
コードは次のとおりです。
erlang - ダイアライザーがこの不良タイプを検出しないのはなぜですか?
この場合、Dialyzer はかなり奇妙に動作しますが、それをよりよく理解できるものは何も見つかりませんでした。
これはエラーではありません:
考えられる return ブランチの 1 つが、型シグネチャと完全に一致しないことに注意してください。
ただし、これにはエラーがあります。
この場合、可能性のあるブランチはどれもtypespec に一致せず、dialyzer は次のエラー メッセージを表示します。
web/blog/user_resolver.ex:4: Invalid type specification for function 'Elixir.Blog.UserResolver':find/2. The success typing is (#{'id':=_, _=>_},_) -> 10 | {'ok',#{'email':=<<_:64>>, 'name':=<<_:48>>}}
私が理解していない部分は、dialyzerがブランチが返す可能性のある 2 つの異なる型 ( ) を明確に(#{'id':=_, _=>_},_) -> 10 | {'ok',#{'email':=<<_:64>>, 'name':=<<_:48>>}
認識しているため、推論の問題ではないということです。では、ブランチの 1 つが型仕様に準拠していないことを認識しないのはなぜですか (ブランチの1 つだけが準拠していれば幸いですが、これは私が望んでいるものではありません)。