Tuple restrictions (#486)

* implement tuple restrictions: (1) named fields after positional, (2) order matters

* after_named_member => seen_named_member
This commit is contained in:
Jeremy G. Siek
2021-04-22 17:51:43 -04:00
committed by GitHub
parent 8b78a85276
commit 5946d9c033
17 changed files with 98 additions and 26 deletions
+9
View File
@@ -150,10 +150,19 @@ auto MakeTuple(int line_num,
e->line_num = line_num;
e->tag = ExpressionKind::Tuple;
int i = 0;
bool seen_named_member = false;
for (auto& arg : *args) {
if (arg.first == "") {
if (seen_named_member) {
std::cerr << line_num
<< ": positional members must come before named members"
<< std::endl;
exit(-1);
}
arg.first = std::to_string(i);
++i;
} else {
seen_named_member = true;
}
}
e->u.tuple.fields = args;