Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.
Sign upFix type-checking bug that permits infinite loop #153
Conversation
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.
Gabriel439 commentedOct 7, 2017
Fixes #151
Dhall is based on a pure type system that has the following rule:
... which both enforce that all terms in the context have to be type-checked
themselves before you can use the context to type-check other terms
You can introduce type-checking bugs if you don't type-check terms before adding
them to the context. The reason why is that the type-checking logic often
normalizes types retrieved from the context and this normalization is not safe
if the terms have not been type-checked first. Ill-typed terms can introduce
infinite loops when normalized, such as the following term:
Dhall's type-checking logic had exactly this issue before this change due to
not type-checking terms added to the context. This change fixes the problem
and also adds a regression test to prevent this problem from recurring.