类型检查器的 HHVM 非确定性行为



我注意到调用hh_client并不总是返回正确的结果。例如:我有以下代码段:

backend\ConvertMessage.hh:

<?hh // strict
namespace ApiBackendConvertMessage {
    enum Status: int {
        success = 0;
        // ... error codes
    };
    // ... some other classes
};

项目中的其他地方:

throw new SoapFault(
    'Server',
    ApiBackendConvertMessageStatus::getNames()[$result->status]
);

有时,在项目中进行一些更改后,我会收到以下错误消息:Could not find static method getNames in type ApiBackendConvertMessageStatus (Typing[4090])

当我删除右大括号之一后的分号时,hh_client停止显示错误。但是当我将分号插入它的位置时,类型检查器仍然给我No errors!消息。

这不是导致此问题的唯一文件 - 它发生在所有枚举上。

在我看来,这是某些hh_client或hh_server缓存的问题。

提前感谢您帮助我解决这个问题(如果我的英语不太好,很抱歉)。

您可能使用的是过时的 HHVM 版本。这个问题听起来非常像这个竞争条件,它在 HHVM 3.5.0 及更高版本中得到了修复(并被向后移植到 3.3.3 LTS 版本中)。值得注意的是,3.4.x 仍然存在该错误。

您使用的是哪个版本的 HHVM?

相关内容

  • 没有找到相关文章

最新更新