diff --git a/lib/Parse/ParseType.cpp b/lib/Parse/ParseType.cpp index 28bf11f65a4dd..1fbf94db39388 100644 --- a/lib/Parse/ParseType.cpp +++ b/lib/Parse/ParseType.cpp @@ -1967,7 +1967,7 @@ bool Parser::canParseTypeTupleBody() { skipSingle(); } } - } while (consumeIf(tok::comma)); + } while (consumeIf(tok::comma) && Tok.isNot(tok::r_paren)); } return consumeIf(tok::r_paren); diff --git a/test/type/types.swift b/test/type/types.swift index 0ff7921b8090f..d78b46771b64c 100644 --- a/test/type/types.swift +++ b/test/type/types.swift @@ -234,3 +234,19 @@ let closureTypeWithTrailingCommas: ( bar: String, quux: String, ) + +let _ = Array<( + foo: Int, + bar: String, +)>() + +let _ = Dictionary< + String, + Dictionary< + String, + Array<( + foo: Int, + bar: String, + )>, + >, +>()