googleapis / api-linter

A linter for APIs defined in protocol buffers.
https://linter.aip.dev/
Apache License 2.0
583 stars 142 forks source link

fix(AIP-4232): correct repeated field check #1337

Closed noahdietz closed 7 months ago

noahdietz commented 7 months ago

We misinterpreted the requirement in AIP-4232 around where repeated fields can be in a google.api.method_signature entry.

Previously, we thought repeated fields could only be the last field in the entry altogether. It is actually only allowed to be a the last field in a dot-notation chain accessing a field. That is to say, we must ensure that in a entry's field reference using dot-notation, only the last field in that chain can be repeated.

Also fixes a bug in FindFieldDotNotation where if the last field in the dot-notation chain is a message, it attempts to keep going and returns nil when it should really just return the field.

Internal bug b/317794116