starwing / lua-protobuf

A Lua module to work with Google protobuf
MIT License
1.75k stars 387 forks source link

protoc:loadfile加载不存在的proto文件报错不准确 #23

Closed chamzzzzzz closed 6 years ago

chamzzzzzz commented 6 years ago

protoc:loadfile加载不存在的proto文件,导致调用了未初始化的 info = self.import_fallback(name), 导致报错信息不准确。

https://github.com/starwing/lua-protobuf/blob/acfaeddf6c3bdd89d1f5e69e88d415f589bb8d35/protoc.lua#L280

测试代码:

local pb = require("pb") local protoc = require("protoc") protoc:loadfile("relative/path/to/not/exists.proto")

输出: lua: ./protoc.lua:283: attempt to call field 'import_fallback' (a nil value) stack traceback: ./protoc.lua:283: in function 'parsefile' ./protoc.lua:1001: in function 'compilefile' ./protoc.lua:1011: in function 'loadfile' demo2.lua:5: in main chunk [C]: in ?

starwing commented 6 years ago

如果你想要高级功能,你就不能直接protoc:loadfile,这个是给你方便使用的,实际上不带完整功能的,文档里说的用法是local p = protoc.new(); p:laodfile "...."这种。实际上你的用法是undocument的。

starwing commented 6 years ago

当然这的确是个bug,所以改了23333

chamzzzzzz commented 6 years ago

嗯嗯^-^,我也是看到文档中有这种用法。

local p = protoc.new() p:loadfile "...."

这种方法我之前也试过,也有同样的问题,现在已经修复啦。