protobufjs / protobuf.js

Protocol Buffers for JavaScript & TypeScript.
Other
9.86k stars 1.41k forks source link

loadSync does not throw Error when imported sub proto file has error #906

Open ranbochen opened 7 years ago

ranbochen commented 7 years ago

protobuf.js version: <6.8.0>

loadSync does not throw Error when imported sub proto file has error

// main proto
package test_import;
//option optimize_for = CODE_SIZE;
//option optimize_for = LITE_RUNTIME;

import "test_invalid_sub.proto";

message TestMainMsg  {
    optional uint32 sub_1 = 1;
    optional TestSubMsg sub_2 = 2; // from test_invalid_sub
}

// sub proto(has error)
package test_import;
//option optimize_for = CODE_SIZE;
//option optimize_for = LITE_RUNTIME;

// invalid sub

message TestSubMsg  {
    optional uint32 p = 1;
    optional uint32 p = 2; // error
}
try {
    root.loadSync(path.resolve('./test_main.proto')).resolveAll()
} catch (error) {
    // this error is resolve error, not parse error. 
    // if not call resolveAll(), catch nothing
    print('load proto failed:', error)
    return
}
landrito commented 6 years ago

+1

This also doesn't throw an Error if an imported proto does not exist.

assaf-xm commented 6 years ago

+1

zyf0330 commented 4 years ago

Nobody?