Remove late
modifier for Dart generated context classes
#3286
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.
When antlr generates code using the Dart runtime, it creates context classes that use the
late
modifier on labeled grammar elements. For example:would generate a term context class where
EOF_
would be declared as:However, in the above example, there is the possibility that
EOF_
would not be set. This is an error in Dart at runtime when trying to access theEOF_
member since thelate
keyword means Dart expects the value to be assigned before use. Thelate
modifier should be removed since the type is already nullable and thus is not required to be assigned (see here for details about null safety withlate
).Thus, the runtime should just generate: