作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当 Dialyzer 遇到未初始化所需字段的记录文字时,它认为控制流在记录文字所在的行处停止。
例子:
-module(sample).
-export([foo/0]).
-record(boo, {a :: number()}).
foo() ->
erlang:display(#boo{}).
错误:
13> dialyzer:run([{files, ["/Users/mheiber/sample.erl"]}, {from, src_code}]).
[{warn_return_no_exit,
{"/Users/mheiber/sample.erl",11},
{no_return,[only_normal,foo,0]}},
{warn_matching,
{"/Users/mheiber/sample.erl",12},
{record_constr,
["#boo{a::'undefined'}","a::number()"]}}]
这是一个错误吗? Erlang 的运行时语义与 Dialyzer 对它们建模的方式不匹配:ERTS(无论好坏!)不断前进,愉快地将原子“未定义”分配给任何未定义的字段。
foo
时,它会触发一连串虚假警告。是无法访问的,任何只能从
foo
访问的函数也算死了。
最佳答案
不,这不是错误。
我会说这是由 Erlang 是动态类型的事实和 -type
引起的限制。在运行时不使用指令。
透析器建立在 ERTS 之上,而不是相反。
这种情况下的问题是dialyzer不知道如何继续执行:它应该使用记录定义中定义的类型还是实际的记录初始化?它报告一个错误,实际的修复留给程序员。
关于erlang - Dialyzer 在不良记录构建时警告 no_exit - 这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65426213/
我在使用 Heroku 时遇到问题,当我尝试部署我的应用程序时,它没有运行 run assets:precompile而且我还没有在本地预编译我的 Assets ,我在 Git 中没有 list 文件
(这是为您提供围绕我的问题的背景信息。您可以跳到“问题”并阅读该内容,然后如果您想直接进入主题,则可以返回并浏览背景知识.抱歉,这是一面文字墙!) 我需要将一堆非常非常糟糕的 JSON 存储在数据库中
我是一名优秀的程序员,十分优秀!