[Chapel Merge] Clarify language specification about parenless calls and POI

Branch: refs/heads/main
Revision: cec47202898112e259c01314462e1f81bd38bc4a
Author: mppf
Link: Clarify language specification about parenless calls and POI by mppf · Pull Request #21655 · chapel-lang/chapel · GitHub
Log Message:
Clarify language specification about parenless calls and POI (#21655)

This PR updates the language specification to clarify POI behavior of
non-method parenless calls.

  • adds a test to make sure that parenless non-method calls can't be
    resolved through POI and parenless method calls can be
  • also adds C++ dyno tests of the same
  • updates the language specification to describe this behavior
  • adjusts a few test-specific problems with a .future about parenless
    functions

The rationale for calls for parenless methods not being found through
POI is primarily that it simplifies the case of resolving an identifier.
Any identifier could potentially be a parenless call that is found
through POI. At the same time, the production compiler has not
considered POI as a source for parenless non-method calls. (And one
reason for that is the way the production compiler separates scope
resolution and function resolution). Since we do not have a rationale to
change that behavior, this PR documents the current behavior in the
spec.

Reviewed by @lydia-duncan - thanks!

  • full comm=none testing

Compare: Comparing c9c47c97346b9564b829da337765b8a2bcbcd7d9...1ac8055fe216d93e82d2e8742ebcab357cfecb26 · chapel-lang/chapel · GitHub

Diff:
M doc/rst/language/spec/generics.rst
M doc/rst/language/spec/procedures.rst
M frontend/test/resolution/testPoi.cpp
A test/functions/resolution/parenless-method-poi.chpl
A test/functions/resolution/parenless-method-poi.good
A test/functions/resolution/parenless-no-poi.chpl
A test/functions/resolution/parenless-no-poi.good
M test/functions/resolution/parenless-overloads.bad
D test/functions/resolution/parenless-overloads.skipif
https://github.com/chapel-lang/chapel/pull/21655.diff