Author: Taymon A. Beal Date: 2023-02-21T02:51:56-08:00 New Revision: 801bd3265362389a7125051128fdd3e6e85cc37b
URL: https://github.com/llvm/llvm-project/commit/801bd3265362389a7125051128fdd3e6e85cc37b DIFF: https://github.com/llvm/llvm-project/commit/801bd3265362389a7125051128fdd3e6e85cc37b.diff LOG: [clalng-format] Fix handling of TypeScript tuples with optional last member These were previously incorrectly treated as syntax errors. Differential Revision: https://reviews.llvm.org/D144317 Added: Modified: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTestJS.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 0461531c32b1..3592862c2885 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -1248,7 +1248,7 @@ class AnnotatingParser { case tok::question: if (Style.isJavaScript() && Tok->Next && Tok->Next->isOneOf(tok::semi, tok::comma, tok::colon, tok::r_paren, - tok::r_brace)) { + tok::r_brace, tok::r_square)) { // Question marks before semicolons, colons, etc. indicate optional // types (fields, parameters), e.g. // function(x?: string, y?) {...} diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp index 5291cb7adaaf..6f07d8b084f5 100644 --- a/clang/unittests/Format/FormatTestJS.cpp +++ b/clang/unittests/Format/FormatTestJS.cpp @@ -2221,6 +2221,7 @@ TEST_F(FormatTestJS, OptionalTypes) { " aaaaaaaaaaaaaaa?: boolean,\n" " aaaaaa?: List<string>\n" "}) {}"); + verifyFormat("type X = [y?];"); } TEST_F(FormatTestJS, IndexSignature) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits