From fe2c77a0065cda43418d625f0162a974ce8ec1e5 Mon Sep 17 00:00:00 2001 From: Zixu Wang <zixu_wang@apple.com> Date: Wed, 6 Apr 2022 14:45:35 -0700 Subject: [PATCH] [clang][ExtractAPI] Fix appendSpace in DeclarationFragments There is a bug in `DeclarationFragments::appendSpace` where the space character is added to a local copy of the last fragment. Differential Revision: https://reviews.llvm.org/D123259 --- clang/lib/ExtractAPI/DeclarationFragments.cpp | 4 ++-- clang/test/ExtractAPI/global_record.c | 4 ++-- clang/test/ExtractAPI/global_record_multifile.c | 4 ++-- clang/test/ExtractAPI/macro_undefined.c | 4 ++-- clang/test/ExtractAPI/objc_category.m | 6 +++--- clang/test/ExtractAPI/objc_interface.m | 8 ++++---- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/clang/lib/ExtractAPI/DeclarationFragments.cpp b/clang/lib/ExtractAPI/DeclarationFragments.cpp index fa28fad358db..a569ff9168bc 100644 --- a/clang/lib/ExtractAPI/DeclarationFragments.cpp +++ b/clang/lib/ExtractAPI/DeclarationFragments.cpp @@ -21,7 +21,7 @@ using namespace llvm; DeclarationFragments &DeclarationFragments::appendSpace() { if (!Fragments.empty()) { - Fragment Last = Fragments.back(); + Fragment &Last = Fragments.back(); if (Last.Kind == FragmentKind::Text) { // Merge the extra space into the last fragment if the last fragment is // also text. @@ -390,7 +390,7 @@ DeclarationFragmentsBuilder::getFragmentsForParam(const ParmVarDecl *Param) { if (Param->isObjCMethodParameter()) Fragments.append("(", DeclarationFragments::FragmentKind::Text) .append(std::move(TypeFragments)) - .append(")", DeclarationFragments::FragmentKind::Text); + .append(") ", DeclarationFragments::FragmentKind::Text); else Fragments.append(std::move(TypeFragments)).appendSpace(); diff --git a/clang/test/ExtractAPI/global_record.c b/clang/test/ExtractAPI/global_record.c index 4c14cae2de87..dfe99c2f55f6 100644 --- a/clang/test/ExtractAPI/global_record.c +++ b/clang/test/ExtractAPI/global_record.c @@ -175,7 +175,7 @@ char unavailable __attribute__((unavailable)); }, { "kind": "text", - "spelling": " *" + "spelling": " * " }, { "kind": "internalParam", @@ -331,7 +331,7 @@ char unavailable __attribute__((unavailable)); }, { "kind": "text", - "spelling": " *" + "spelling": " * " }, { "kind": "internalParam", diff --git a/clang/test/ExtractAPI/global_record_multifile.c b/clang/test/ExtractAPI/global_record_multifile.c index 76e18811a53b..577eb121cf92 100644 --- a/clang/test/ExtractAPI/global_record_multifile.c +++ b/clang/test/ExtractAPI/global_record_multifile.c @@ -177,7 +177,7 @@ char unavailable __attribute__((unavailable)); }, { "kind": "text", - "spelling": " *" + "spelling": " * " }, { "kind": "internalParam", @@ -333,7 +333,7 @@ char unavailable __attribute__((unavailable)); }, { "kind": "text", - "spelling": " *" + "spelling": " * " }, { "kind": "internalParam", diff --git a/clang/test/ExtractAPI/macro_undefined.c b/clang/test/ExtractAPI/macro_undefined.c index feb4b3f43637..0ae04d02e154 100644 --- a/clang/test/ExtractAPI/macro_undefined.c +++ b/clang/test/ExtractAPI/macro_undefined.c @@ -142,7 +142,7 @@ FUNC_GEN(bar, const int *, unsigned); }, { "kind": "text", - "spelling": " *" + "spelling": " * " }, { "kind": "internalParam", @@ -189,7 +189,7 @@ FUNC_GEN(bar, const int *, unsigned); }, { "kind": "text", - "spelling": " *" + "spelling": " * " }, { "kind": "internalParam", diff --git a/clang/test/ExtractAPI/objc_category.m b/clang/test/ExtractAPI/objc_category.m index bc572adfcd16..2416e3049bd5 100644 --- a/clang/test/ExtractAPI/objc_category.m +++ b/clang/test/ExtractAPI/objc_category.m @@ -131,7 +131,7 @@ }, { "kind": "text", - "spelling": ")" + "spelling": ") " }, { "kind": "identifier", @@ -185,7 +185,7 @@ }, { "kind": "text", - "spelling": ")" + "spelling": ") " }, { "kind": "identifier", @@ -266,7 +266,7 @@ }, { "kind": "text", - "spelling": ")" + "spelling": ") " }, { "kind": "typeIdentifier", diff --git a/clang/test/ExtractAPI/objc_interface.m b/clang/test/ExtractAPI/objc_interface.m index a105a58281fb..a74a53c8db2c 100644 --- a/clang/test/ExtractAPI/objc_interface.m +++ b/clang/test/ExtractAPI/objc_interface.m @@ -142,7 +142,7 @@ }, { "kind": "text", - "spelling": ")" + "spelling": ") " }, { "kind": "identifier", @@ -163,7 +163,7 @@ }, { "kind": "text", - "spelling": ")" + "spelling": ") " }, { "kind": "internalParam", @@ -244,7 +244,7 @@ }, { "kind": "text", - "spelling": ")" + "spelling": ") " }, { "kind": "typeIdentifier", @@ -398,7 +398,7 @@ }, { "kind": "text", - "spelling": ")" + "spelling": ") " }, { "kind": "identifier", -- GitLab