[clang] 5326c9e - Revert "Give NullabilityKind a printing operator<<"
Caroline Tice via cfe-commits
cfe-commits at lists.llvm.org
Fri May 5 23:40:47 PDT 2023
Author: Caroline Tice
Date: 2023-05-05T23:37:30-07:00
New Revision: 5326c9e480d70e16c2504cb5143524aff3ee2605
URL: https://github.com/llvm/llvm-project/commit/5326c9e480d70e16c2504cb5143524aff3ee2605
DIFF: https://github.com/llvm/llvm-project/commit/5326c9e480d70e16c2504cb5143524aff3ee2605.diff
LOG: Revert "Give NullabilityKind a printing operator<<"
This reverts commit 0a532207b8696d81e46017f444bd2257347f129b.
This breaks several of our tests. Have given reproducers to author.
Reverting this until author can fix the issue.
Added:
Modified:
clang/include/clang/Basic/Specifiers.h
clang/lib/Basic/Diagnostic.cpp
clang/lib/Basic/IdentifierTable.cpp
clang/test/SemaObjC/nullable-result.m
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/Specifiers.h b/clang/include/clang/Basic/Specifiers.h
index 06279a016a507..a8c35fed9997e 100644
--- a/clang/include/clang/Basic/Specifiers.h
+++ b/clang/include/clang/Basic/Specifiers.h
@@ -19,9 +19,6 @@
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/ErrorHandling.h"
-namespace llvm {
-class raw_ostream;
-} // namespace llvm
namespace clang {
/// Define the meaning of possible values of the kind in ExplicitSpecifier.
@@ -336,8 +333,6 @@ namespace clang {
// parameters are assumed to only get null on error.
NullableResult,
};
- /// Prints human-readable debug representation.
- llvm::raw_ostream &operator<<(llvm::raw_ostream&, NullabilityKind);
/// Return true if \p L has a weaker nullability annotation than \p R. The
/// ordering is: Unspecified < Nullable < NonNull.
diff --git a/clang/lib/Basic/Diagnostic.cpp b/clang/lib/Basic/Diagnostic.cpp
index b2106b0eb6611..3474acbced195 100644
--- a/clang/lib/Basic/Diagnostic.cpp
+++ b/clang/lib/Basic/Diagnostic.cpp
@@ -43,12 +43,28 @@ using namespace clang;
const StreamingDiagnostic &clang::operator<<(const StreamingDiagnostic &DB,
DiagNullabilityKind nullability) {
- DB.AddString(
- ("'" +
- getNullabilitySpelling(nullability.first,
- /*isContextSensitive=*/nullability.second) +
- "'")
- .str());
+ StringRef string;
+ switch (nullability.first) {
+ case NullabilityKind::NonNull:
+ string = nullability.second ? "'nonnull'" : "'_Nonnull'";
+ break;
+
+ case NullabilityKind::Nullable:
+ string = nullability.second ? "'nullable'" : "'_Nullable'";
+ break;
+
+ case NullabilityKind::Unspecified:
+ string = nullability.second ? "'null_unspecified'" : "'_Null_unspecified'";
+ break;
+
+ case NullabilityKind::NullableResult:
+ assert(!nullability.second &&
+ "_Nullable_result isn't supported as context-sensitive keyword");
+ string = "_Nullable_result";
+ break;
+ }
+
+ DB.AddString(string);
return DB;
}
diff --git a/clang/lib/Basic/IdentifierTable.cpp b/clang/lib/Basic/IdentifierTable.cpp
index 9be42c0f95ddc..97dc5cd2d9a6d 100644
--- a/clang/lib/Basic/IdentifierTable.cpp
+++ b/clang/lib/Basic/IdentifierTable.cpp
@@ -849,20 +849,6 @@ StringRef clang::getNullabilitySpelling(NullabilityKind kind,
llvm_unreachable("Unknown nullability kind.");
}
-llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, NullabilityKind NK) {
- switch (NK) {
- case NullabilityKind::NonNull:
- return OS << "NonNull";
- case NullabilityKind::Nullable:
- return OS << "Nullable";
- case NullabilityKind::NullableResult:
- return OS << "NullableResult";
- case NullabilityKind::Unspecified:
- return OS << "Unspecified";
- }
- llvm_unreachable("Unknown nullability kind.");
-}
-
diag::kind
IdentifierTable::getFutureCompatDiagKind(const IdentifierInfo &II,
const LangOptions &LangOpts) {
diff --git a/clang/test/SemaObjC/nullable-result.m b/clang/test/SemaObjC/nullable-result.m
index 17cc1dd63810a..6125141e8c261 100644
--- a/clang/test/SemaObjC/nullable-result.m
+++ b/clang/test/SemaObjC/nullable-result.m
@@ -25,9 +25,9 @@ void test_conversion(void) {
}
void test_dup(void) {
- id _Nullable_result _Nullable_result a; // expected-warning {{duplicate nullability specifier '_Nullable_result'}}
- id _Nullable _Nullable_result b; // expected-error{{nullability specifier '_Nullable_result' conflicts with existing specifier '_Nullable'}}
- id _Nullable_result _Nonnull c; // expected-error{{nullability specifier '_Nonnull' conflicts with existing specifier '_Nullable_result'}}
+ id _Nullable_result _Nullable_result a; // expected-warning {{duplicate nullability specifier _Nullable_result}}
+ id _Nullable _Nullable_result b; // expected-error{{nullability specifier _Nullable_result conflicts with existing specifier '_Nullable'}}
+ id _Nullable_result _Nonnull c; // expected-error{{nullability specifier '_Nonnull' conflicts with existing specifier _Nullable_result}}
}
@interface NoContextSensitive
More information about the cfe-commits
mailing list