-
Notifications
You must be signed in to change notification settings - Fork 13.4k
[clang] Remove "unknown" from availability diags #138610
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Previously, diagnostics like `error: 'fNew' is unavailable: introduced in macOS 11 unknown` were getting emitted when the active target triple didn't have a enviornment tied to it. Instead, add a guard against this to avoid the `unknown`.
@llvm/pr-subscribers-clang-driver @llvm/pr-subscribers-clang Author: Cyndy Ishida (cyndyishida) ChangesPreviously, diagnostics like Full diff: https://github.com/llvm/llvm-project/pull/138610.diff 1 Files Affected:
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp
index fead99c5f28a9..47857e7fd523b 100644
--- a/clang/lib/AST/DeclBase.cpp
+++ b/clang/lib/AST/DeclBase.cpp
@@ -695,11 +695,13 @@ static AvailabilityResult CheckAvailability(ASTContext &Context,
if (!A->getIntroduced().empty() &&
EnclosingVersion < A->getIntroduced()) {
IdentifierInfo *IIEnv = A->getEnvironment();
- StringRef TargetEnv =
- Context.getTargetInfo().getTriple().getEnvironmentName();
- StringRef EnvName = llvm::Triple::getEnvironmentTypeName(
- Context.getTargetInfo().getTriple().getEnvironment());
- // Matching environment or no environment on attribute
+ auto &Triple = Context.getTargetInfo().getTriple();
+ StringRef TargetEnv = Triple.getEnvironmentName();
+ StringRef EnvName =
+ Triple.hasEnvironment()
+ ? llvm::Triple::getEnvironmentTypeName(Triple.getEnvironment())
+ : "";
+ // Matching environment or no environment on attribute.
if (!IIEnv || (!TargetEnv.empty() && IIEnv->getName() == TargetEnv)) {
if (Message) {
Message->clear();
@@ -709,7 +711,7 @@ static AvailabilityResult CheckAvailability(ASTContext &Context,
<< EnvName << HintMessage;
}
}
- // Non-matching environment or no environment on target
+ // Non-matching environment or no environment on target.
else {
if (Message) {
Message->clear();
|
The change looks reasonable but can you add a test? thanks! |
Open to other suggestions @cor3ntin, but I didn't figure out a way to ensure part of a diagnostic was omitted with cc1's |
784d8a7
to
9ee9dd6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. LGTM.
Previously, diagnostics like `error: 'fNew' is unavailable: introduced in macOS 11 unknown` were getting emitted when the active target triple didn't have an environment tied to it. Instead, add a guard against this to avoid the `unknown`.
Previously, diagnostics like
error: 'fNew' is unavailable: introduced in macOS 11 unknown
were getting emitted when the active target triple didn't have an environment tied to it. Instead, add a guard against this to avoid theunknown
.