Lane: reflection/parse (sweep 2, finding 2)
Type.prototype.add (src/type.js:400-425) checks reserved ranges/names for fields but never checks this.extensions; extension ranges also aren't checked against reserved or each other.
Repro (executed by sweep, luna, grok):
pb.parse('syntax = "proto2"; message M { extensions 1 to 10; optional string a = 5; }'); // ACCEPTED; protoc rejects
Verdicts: luna Confirm Strong; grok Downgrade Worth exploring (hand-written proto only). Recorded as Worth exploring.
Upstream: no match ("extension range collision", "extensions overlap").
Decision question: Adopt (add an extensions-range check alongside the reserved check) or Reject?
Lane: reflection/parse (sweep 2, finding 2)
Type.prototype.add(src/type.js:400-425) checksreservedranges/names for fields but never checksthis.extensions; extension ranges also aren't checked againstreservedor each other.Repro (executed by sweep, luna, grok):
Verdicts: luna Confirm Strong; grok Downgrade Worth exploring (hand-written proto only). Recorded as Worth exploring.
Upstream: no match ("extension range collision", "extensions overlap").
Decision question: Adopt (add an extensions-range check alongside the reserved check) or Reject?