Skip to content

fix(compiler): qualify cross-file protobuf bindings through the owning const map - #162

Merged
paralin merged 1 commit into
masterfrom
test/binding-matrix-3
Aug 24, 2026
Merged

fix(compiler): qualify cross-file protobuf bindings through the owning const map#162
paralin merged 1 commit into
masterfrom
test/binding-matrix-3

Conversation

@paralin

@paralin paralin commented Aug 24, 2026

Copy link
Copy Markdown
Member

A same-package sibling field constructor qualified the referenced message class with the Go safe identifier of the struct name. When protoc-gen-go applies digit-camel capitalization, the sibling binding's exported const spells the name differently — V86fs versus the struct name V86Fs — so the emitted reference dangled, breaking any proto package that combines digit-camel message names with same-package cross-file references.

The package-wide binding registry now records each binding file's bound message names alongside its import source and output name. Cross-file constructors qualify through that map and emit the actual exported const spelling, falling back to the safe identifier when a message has no bound name. Exact-match bindings are unchanged.

Adds TestProtobufTypeScriptBindingCrossFileDigitCamelFieldCtor, which fails against the dangling V86Fs reference before the fix and asserts the emitted constructor resolves to the sibling's actual V86fs const after it.

…g const map

A same-package sibling field constructor qualified the referenced
message class with the Go safe identifier of the struct name. When
protoc-gen-go applies digit-camel capitalization the sibling binding's
exported const spells the name differently, such as V86fs versus the
struct name V86Fs, so the emitted reference dangled.

Record each binding file's bound message names in the package-wide
registry and qualify cross-file constructors through that map, emitting
the actual exported const spelling. Fall back to the safe identifier
when a message has no bound name.

Signed-off-by: Christian Stewart <christian@aperture.us>
@paralin
paralin merged commit b0ea06a into master Aug 24, 2026
9 checks passed
@paralin
paralin deleted the test/binding-matrix-3 branch August 24, 2026 17:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant