[Chapel Merge] Add AST nodes for calls and parse them

Branch: refs/heads/master
Revision: 4a90b6d
Author: mppf
Log Message:

Merge pull request #17650 from mppf/add-calls

Add AST nodes for calls and parse them

This PR ads support for calls like f(a,b,c) or f(a=aa, b, c=cc) to
compiler/next.

Since named actuals are actually relatively uncommon, it represents them
in the AST with a separate vector of names that can be completely empty
if no named actuals were present.

In order to avoid having concerns of parsing impact the AST design, the
parser uses a separate type, MaybeNamedActualList/ MaybeNamedActual when
parsing named actuals. This type just stores an empty string for the name
if the actual is unnamed. The helper method consumeNamedActuals
converts a list of these into the vector of actual expressions and the
vector of names for the AST node build call.

To support the parser creating and checking for empty PODUniqueStrings,
adds PODUniqueString::build() and isEmpty().

Also, while working on the parser, made a few append methods return the
resulting list, for convenience.

While working on these, I noticed some unnecessary forward declarations
in the AST classes, so this PR removes those.

Reviewed by @e-kayrakli and @dlongnecke-cray - thanks!

Modified Files:
A compiler/next/lib/uast/Call.cpp

A compiler/next/lib/uast/FnCall.cpp
M compiler/next/include/chpl/queries/UniqueString-detail.h
M compiler/next/include/chpl/uast/Call.h
M compiler/next/include/chpl/uast/Comment.h
M compiler/next/include/chpl/uast/FnCall.h
M compiler/next/include/chpl/uast/Identifier.h
M compiler/next/include/chpl/uast/Module.h
M compiler/next/include/chpl/uast/ModuleDecl.h
M compiler/next/include/chpl/uast/Variable.h
M compiler/next/include/chpl/uast/VariableDecl.h
M compiler/next/lib/frontend/Parser/ParserContext.h
M compiler/next/lib/frontend/Parser/ParserContextImpl.h
M compiler/next/lib/frontend/Parser/chapel.ypp
M compiler/next/lib/frontend/Parser/parser-dependencies.h
M compiler/next/lib/uast/CMakeLists.txt
M compiler/next/lib/uast/Decl.cpp
M compiler/next/test/frontend/testParse.cpp

Compare: https://github.com/chapel-lang/chapel/compare/02ccd75968b7...4a90b6d58391