Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Require explicit new for undecoration #849

Open
wants to merge 79 commits into
base: develop
Choose a base branch
from

Conversation

krame505
Copy link
Member

Changes

Fixes #751.

This changes the semantics of referring to a (non-data) nonterminal child/local/translation attribute/pattern variable to be always decorated, and require explicit new to undecorate the tree. Let expressions binding decorated trees also no longer implicitly undecorate.

The bulk of the changes here are a largely automated refactor to use tree sharing, and explicit new where that isn't possible. Thus if anyone would actually like to try reviewing this, it is probably easiest to look at individual commits that have the type system changes.

This is a major breaking change - downstream projects will need to be refactored as well before merging this PR. Issues #842 and #843 should probably also be addressed before attempting this refactoring.

There is a slight regression in the deep-rebuild time (maybe 10%?) , which I haven't investigated too closely yet. I was expecting performance to improve through more use of sharing and type system simpliciations, but there is also a new pass for specializing InhSets, and a lot of calls to new added.

Documentation

The documentation has not yet been updated. I think the main things to fix are https://melt.cs.umn.edu/silver/concepts/decorated-vs-undecorated/#implicit-decoration and any uses of implicit undecoration in examples.

Testing

The Silver compiler, test suite and tutorials have been updated to account for these changes.

Use antiquotation, store test values in nondecorated locals, make Test closed
…s as undecorated, remove pattern match type checking reuse hack
…vars, and provide a crude approximation of function dependencies
…ny possible decoration site has an inh eq in hidden transitive deps check
…lication, permit application of dispatch with no sig shared children outside of forwarding contexts
…ef even for these prods since we now handle this in building the dec site tree
…shared children, don't abuse decSiteVertexInfo for this
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.

Simplifying Silver's possibly-decorated type inference semantics
1 participant