Add 3 '*' operators: one prefix, one infix, and one postfix, per #523. (#582)

The presence or absence of whitespace is used to determine which
operator is in use, following the rules described in #520.

Support for prefix * dereference operator follows #523.

Co-authored-by: Geoff Romer <gromer@google.com>
This commit is contained in:
Richard Smith
2021-06-21 17:09:34 -07:00
committed by GitHub
co-authored by Geoff Romer
parent d6b47ba10f
commit 89e21113c3
12 changed files with 179 additions and 21 deletions
+6
View File
@@ -537,6 +537,7 @@ TEST_F(ParseTreeTest, OperatorFixity) {
" var t: Type = Int*;\n"
" t = t**;\n"
" n = n * n;\n"
" n = n * *p;\n"
" n = n*n;\n"
" G(Int*, n * n);\n"
"}");
@@ -577,6 +578,11 @@ TEST_F(ParseTreeTest, OperatorFixity) {
MatchNameReference("n"), "=",
MatchInfixOperator(MatchNameReference("n"), "*",
MatchNameReference("n")))),
MatchExpressionStatement(MatchInfixOperator(
MatchNameReference("n"), "=",
MatchInfixOperator(
MatchNameReference("n"), "*",
MatchPrefixOperator("*", MatchNameReference("p"))))),
MatchExpressionStatement(MatchInfixOperator(
MatchNameReference("n"), "=",
MatchInfixOperator(MatchNameReference("n"), "*",