[Chapel Merge] Update spec to describe cast operator, requirement

Branch: refs/heads/master
Revision: cec4ec0
Author: mppf
Log Message:

Merge pull request #17329 from mppf/document-cast-spec

Update spec to describe cast operator, requirements on other conversions

This PR updates the conversions chapter of the language specification and makes related changes.

For https://github.com/Cray/chapel-private/issues/1751 and https://github.com/Cray/chapel-private/issues/1752.

Follow-up to #15838 #17092 #17146.

Future work:

  • It might not be the clearest to describe assignment or init= between
    types as a kind of conversion. Maybe we should just call these
    assignment between different types or copy initialization between
    different types.
  • The division in the exposition between subtype conversions, generic
    type conversions, and class conversions is not a very satisfying
    division and seems to have a lot of overlap. Perhaps the subtype
    concept could be described separately, as a concept, and then the
    sections can consider conversion to a generic type or class
    conversions.

Reviewed by @vasslitvinov - thanks!

Modified Files:
M doc/rst/language/spec/conversions.rst

M doc/rst/language/spec/lexical-structure.rst
M doc/rst/language/spec/procedures.rst

Compare: https://github.com/chapel-lang/chapel/compare/4ec7c20ab323...cec4ec0bc748