protobuf
protobuf copied to clipboard
Sort import for plugin outputs
If generatePlugin() function is used to generate Go code, imports are not ordered. Because imports are technically a map inside a Generator and iteration order over a map is not deterministic, it results to import ordering in the resulting generated file be non-deterministic too. This creates a problem for build tools that extensively use remote cache based on hashes of input targets, like Bazel. The change adds sorting through AST. Ideally, generatePlugin() function should reuse the code for Generate() function, that already has this sorting among other things.