我注意到调用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?