[Chapel Merge] dyno: compute field types without recursive query

Branch: refs/heads/main
Revision: 5b5c562
Author: mppf
Link: Unavailable
Log Message:

Merge pull request #19765 from mppf/remove-recursive-query-fields

dyno: compute field types without recursive query

Resolves https://github.com/Cray/chapel-private/issues/3290

Continuing #19741 which includes some justification for the direction here.

This PR adjusts the computation of field types (as well as the
computation of whether or not a type is generic) to no longer rely on
recursive queries with partial results.

  • removes recursive query & partial result support from query framework
  • resolves fields a declaration at a time instead of all at once (to
    better handle fields that refer to each other)
  • adds getTypeGenericityIgnoring that includes a set of types to ignore
    for the purposes of the computation in order to avoid recursion
  • removes QualifiedType::genericityWithFields in favor of a query (since
    it would have to gain an ignore set argument and tracing through the
    QualifiedType method seemed to make it more complex than if it were
    just a resolution function)

Reviewed by @dlongnecke-cray - thanks!

Modified Files:
R compiler/dyno/test/queries/testRecursiveQuery.cpp

M compiler/dyno/include/chpl/queries/Context.h
M compiler/dyno/include/chpl/queries/query-impl.h
M compiler/dyno/include/chpl/resolution/resolution-queries.h
M compiler/dyno/include/chpl/types/QualifiedType.h
M compiler/dyno/lib/queries/Context.cpp
M compiler/dyno/lib/resolution/Resolver.cpp
M compiler/dyno/lib/resolution/Resolver.h
M compiler/dyno/lib/resolution/can-pass.cpp
M compiler/dyno/lib/resolution/disambiguation.cpp
M compiler/dyno/lib/resolution/resolution-queries.cpp
M compiler/dyno/lib/resolution/resolution-types.cpp
M compiler/dyno/lib/types/QualifiedType.cpp
M compiler/dyno/test/queries/CMakeLists.txt

Compare: https://github.com/chapel-lang/chapel/compare/f4e8619ed834...5b5c562dc45b