Maps create compilation errors in generated code because entry type is not defined
Closed this issue · 3 comments
dsyer commented
Input:
syntax = "proto3";
message TestMessage {
bytes payload = 1;
map<string, string> headers = 2;
}
Output:
// Code generated by protoc-gen-as. DO NOT EDIT.
// Versions:
// protoc-gen-as v0.4.0
// protoc v3.19.4
import { Writer, Reader } from "as-proto";
export class TestMessage {
static encode(message: TestMessage, writer: Writer): void {
writer.uint32(10);
writer.bytes(message.payload);
const headers = message.headers;
for (let i = 0; i < headers.length; ++i) {
writer.uint32(18);
writer.fork();
TestMessage.HeadersEntry.encode(headers[i], writer);
writer.ldelim();
}
}
static decode(reader: Reader, length: i32): TestMessage {
const end: usize = length < 0 ? reader.end : reader.ptr + length;
const message = new TestMessage();
while (reader.ptr < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
message.payload = reader.bytes();
break;
case 2:
message.headers.push(
TestMessage.HeadersEntry.decode(reader, reader.uint32())
);
break;
default:
reader.skipType(tag & 7);
break;
}
}
return message;
}
payload: Uint8Array;
headers: Array<TestMessage.HeadersEntry>;
constructor(
payload: Uint8Array = new Uint8Array(0),
headers: Array<TestMessage.HeadersEntry> = []
) {
this.payload = payload;
this.headers = headers;
}
}
export namespace TestMessage {}
The output kind of looks OK, but the HeadersEntry
type is never defined.
piotr-oles commented
This should be fixed in the newest version - could you check if it works for you?
piotr-oles commented
Related PR: #28
dsyer commented
That seems much better, thanks.