Improvements/fixes for the coercion rules #254
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.
This PR is concerned with the coercion rules (formerly known as function conversion rules).
It fixes issue #242, a minor omission where we failed to say that coercion rules are used to convert the result of a static function call to the required return type.
It implements the proposal in issue #189, to apply the coercion rules to variable declarations/bindings as well as to function arguments and results. This brings XQuery into line with XSLT, and thus paves the way to allowing type declarations on "let" clauses in XPath.
It does some further editorial tidying up of the rules, such as improvng the definition of the term "coercion rules", adding clarifying notes, etc.
In approving this PR, I am requesting approval of the change (which was already in the draft, but has not been discussed) to introduce "down-casting" or "relabelling". This allows a function to declare a parameter with required type
xs:positiveInteger
, and for a caller to supply the value 42 without explicitly casting it toxs:positiveInteger
.