Gas charges to use Name.t instead of string #897
Merged
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.
Gas charge AST nodes refer to program variables, so they need to use Name.t (for an appropriate Name struct) instead of string. This means that they need to be disambiguated.
Most of the code in this PR is entirely brain-dead boilerplate, except for the small change in EvalUtil.ml. The use of gas charge nodes introduces an extra dependency between Gas.ml and Syntax.ml, which makes it impossible to use different syntax structs in EvalUtil.ml and Gas.ml. I have solved this by setting
EvalSyntax = Gas.GasSyntax
, which I think makes sense since we would expect to charge gas based on the syntax being evaluated.I worry that this will stop working on my current disambiguation branch, but I'll find out when I merge master to that branch.