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.
Decouple super and reference. This allows providing both in a clafer declaration:
Also, inheritance from primitive types is not allowed anymore. Previously
: integerwas rewritten to-> integer; however, since now a reference can be provided independently, we cannot perform that rewrite. For example, rewritingx : integer -> stringwould either require ability to have two references or choosing one. Perhaps the rewrite could still be provided in cases when no reference is given but that would encourage keeping using the bad style. UPDATE: after the pull request, desugaring of : into -> for primitive types was added back and it is performed when safe (that is, there's no reference).Major grammar changes:
IR changes:
The
ISuperdatatype has been removed.Consequences
The uniqueness constraint for set reference clafers is no longer created in desugarer. Instead, the Alloy and Choco generators produce the required output for bags and sets.
The default super
claferis no longer produced by desugarer. It is represented in IR by_super=Nothing. It is also missing from the desugared clafer output for simplicitydes.cfrand the XML output.Stats are computed differently, because super and ref are counted independently.
We can now implement redefinition.