Skip to content

Commit e85612d

Browse files
committed
2 parents b50ea2f + d6e5f18 commit e85612d

5 files changed

+22
-1
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
d: () -> (int, int) = (1,2);
2+
3+
main: () = { }
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
b: () -> (a, b:_) = (1,2);
2+
3+
main: () = { }
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pure2-return-tuple-no-identifier-error.cpp2(1,11): error: expected identifier, not 'int'
2+
pure2-return-tuple-no-identifier-error.cpp2(1,16): error: expected identifier, not 'int'
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pure2-return-tuple-no-type-error.cpp2(1,11): error: return parameter 'a' must have a type
2+
pure2-return-tuple-no-type-error.cpp2(1,14): error: return parameter 'b' must have a type

source/parse.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5434,7 +5434,18 @@ class parser
54345434
error("Cpp2 is currently exploring the path of not allowing default arguments - use overloading instead", false);
54355435
return {};
54365436
}
5437-
5437+
if (is_named && is_returns) {
5438+
auto tok = n->name();
5439+
assert(tok);
5440+
if (tok->type() != lexeme::Identifier) {
5441+
error("expected identifier, not '" + tok->to_string(true) + "'",
5442+
false, tok->position());
5443+
}
5444+
else if (n->declaration->has_wildcard_type()) {
5445+
error("return parameter '" + tok->to_string(true) + "' must have a type",
5446+
false, tok->position());
5447+
}
5448+
}
54385449
return n;
54395450
}
54405451

0 commit comments

Comments
 (0)