Merged
Conversation
stefanvanburen
approved these changes
Apr 9, 2026
emcfarlane
reviewed
Apr 9, 2026
mcy
approved these changes
Apr 9, 2026
emcfarlane
added a commit
that referenced
this pull request
Apr 17, 2026
Builds on #699, which replaced panics with a single valid flag. That flag was too coarse: any missing symbol blocked lowering for every file in the session, so a proto2/proto3 file against a pre-editions vendored descriptor.proto would fail compilation even though it used nothing editions-era. Changes: - Widen builtin:"optional" to cover everything introduced in editions 2023+: FeatureSet, all Feature* / *Features, OptionTargets, UnverifiedLazy, EditionDefaults*, EditionSupport*, ExtnDecls*. - Replace the valid flag with one error diagnostic per missing required symbol, attached to descriptor.proto. Removes File.Lowered(). - IsClosedEnum / IsPacked / IsUnicode / populateJSONNames use syntax for proto2/proto3 and only consult FeatureSet for editions. - Augment the "cannot find message field" diagnostic when the name matches a tagged-optional builtin, pointing at descriptor.proto and explaining it's editions-era. Four fixtures in experimental/ir/testdata/builtins/ cover broken, vendored-proto3 (existing), vendored-proto3 with options, and vendored-editions with unavailable feature.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change makes it so that instead of panicking (and
recovering with an ICE) for invalid
descriptor.protos, thecompiler will instead stop lowering for all files, other than
descriptor.protoitself.This makes it so that vendored
descriptor.protodo notresult in ICE/crashing behaviour for consumers of the compiler.
However, I left a note that this is now behaviourally indistinguishable
from a bad
descriptor.protoprovided by the compiler.