Validate record types to have no duplicate fields. #1352
Closed
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 is a redo of #1324: detecting duplicate fields in record types, whether in annotations or aliases. The detection happens during validation, so there's a very nice error and it's possible to get more than one at a time.
Example message:
Notice that it detected the duplicate even when nested in a list in a function, and also provides the exact location. This also works for aliases:
The implementation is adding another value constructor to
Syntax.Error
an detecting it inValidate
. As we've seen, we need to recursively traverse raw types to ensure there are no invalid records hiding.Adds two tests. Renames the value constructor for record values with duplicate fields for matching.