mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-27 22:02:33 +01:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user