Author: Vlad Serebrennikov Date: 2025-05-02T13:05:37+03:00 New Revision: c0917ab2e1cf603c3746f519fe1826869767bd8b
URL: https://github.com/llvm/llvm-project/commit/c0917ab2e1cf603c3746f519fe1826869767bd8b DIFF: https://github.com/llvm/llvm-project/commit/c0917ab2e1cf603c3746f519fe1826869767bd8b.diff LOG: [clang][NFC] Convert `Sema::IfExistsResult` to scoped enum Added: Modified: clang/include/clang/Sema/Sema.h clang/lib/Parse/Parser.cpp clang/lib/Sema/SemaExprCXX.cpp clang/lib/Sema/TreeTransform.h Removed: ################################################################################ diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index d5ac4d2fa0fb2..0ea07e2ab4cd4 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -783,6 +783,22 @@ enum class AllocationFunctionScope { Both }; +/// Describes the result of an "if-exists" condition check. +enum class IfExistsResult { + /// The symbol exists. + Exists, + + /// The symbol does not exist. + DoesNotExist, + + /// The name is a dependent name, so the results will diff er + /// from one instantiation to the next. + Dependent, + + /// An error occurred. + Error +}; + /// Sema - This implements semantic analysis and AST building for C. /// \nosubgrouping class Sema final : public SemaBase { @@ -8667,22 +8683,6 @@ class Sema final : public SemaBase { RecoverUncorrectedTypos, Filter); } - /// Describes the result of an "if-exists" condition check. - enum IfExistsResult { - /// The symbol exists. - IER_Exists, - - /// The symbol does not exist. - IER_DoesNotExist, - - /// The name is a dependent name, so the results will diff er - /// from one instantiation to the next. - IER_Dependent, - - /// An error occurred. - IER_Error - }; - IfExistsResult CheckMicrosoftIfExistsSymbol(Scope *S, CXXScopeSpec &SS, const DeclarationNameInfo &TargetNameInfo); diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp index ec87317897200..cab0604821c03 100644 --- a/clang/lib/Parse/Parser.cpp +++ b/clang/lib/Parse/Parser.cpp @@ -2436,21 +2436,21 @@ bool Parser::ParseMicrosoftIfExistsCondition(IfExistsCondition& Result) { switch (Actions.CheckMicrosoftIfExistsSymbol(getCurScope(), Result.KeywordLoc, Result.IsIfExists, Result.SS, Result.Name)) { - case Sema::IER_Exists: + case IfExistsResult::Exists: Result.Behavior = Result.IsIfExists ? IfExistsBehavior::Parse : IfExistsBehavior::Skip; break; - case Sema::IER_DoesNotExist: + case IfExistsResult::DoesNotExist: Result.Behavior = !Result.IsIfExists ? IfExistsBehavior::Parse : IfExistsBehavior::Skip; break; - case Sema::IER_Dependent: + case IfExistsResult::Dependent: Result.Behavior = IfExistsBehavior::Dependent; break; - case Sema::IER_Error: + case IfExistsResult::Error: return true; } diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index ee45e196bdb5d..87a840d37e1d9 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -9671,17 +9671,16 @@ StmtResult Sema::ActOnFinishFullStmt(Stmt *FullStmt) { return MaybeCreateStmtWithCleanups(FullStmt); } -Sema::IfExistsResult -Sema::CheckMicrosoftIfExistsSymbol(Scope *S, - CXXScopeSpec &SS, +IfExistsResult +Sema::CheckMicrosoftIfExistsSymbol(Scope *S, CXXScopeSpec &SS, const DeclarationNameInfo &TargetNameInfo) { DeclarationName TargetName = TargetNameInfo.getName(); if (!TargetName) - return IER_DoesNotExist; + return IfExistsResult::DoesNotExist; // If the name itself is dependent, then the result is dependent. if (TargetName.isDependentName()) - return IER_Dependent; + return IfExistsResult::Dependent; // Do the redeclaration lookup in the current scope. LookupResult R(*this, TargetNameInfo, Sema::LookupAnyName, @@ -9694,29 +9693,30 @@ Sema::CheckMicrosoftIfExistsSymbol(Scope *S, case LookupResultKind::FoundOverloaded: case LookupResultKind::FoundUnresolvedValue: case LookupResultKind::Ambiguous: - return IER_Exists; + return IfExistsResult::Exists; case LookupResultKind::NotFound: - return IER_DoesNotExist; + return IfExistsResult::DoesNotExist; case LookupResultKind::NotFoundInCurrentInstantiation: - return IER_Dependent; + return IfExistsResult::Dependent; } llvm_unreachable("Invalid LookupResult Kind!"); } -Sema::IfExistsResult -Sema::CheckMicrosoftIfExistsSymbol(Scope *S, SourceLocation KeywordLoc, - bool IsIfExists, CXXScopeSpec &SS, - UnqualifiedId &Name) { +IfExistsResult Sema::CheckMicrosoftIfExistsSymbol(Scope *S, + SourceLocation KeywordLoc, + bool IsIfExists, + CXXScopeSpec &SS, + UnqualifiedId &Name) { DeclarationNameInfo TargetNameInfo = GetNameFromUnqualifiedId(Name); // Check for an unexpanded parameter pack. auto UPPC = IsIfExists ? UPPC_IfExists : UPPC_IfNotExists; if (DiagnoseUnexpandedParameterPack(SS, UPPC) || DiagnoseUnexpandedParameterPack(TargetNameInfo, UPPC)) - return IER_Error; + return IfExistsResult::Error; return CheckMicrosoftIfExistsSymbol(S, SS, TargetNameInfo); } diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 3946662f807b2..aed00e0ff06cd 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -9292,23 +9292,23 @@ TreeTransform<Derived>::TransformMSDependentExistsStmt( SS.Adopt(QualifierLoc); bool Dependent = false; switch (getSema().CheckMicrosoftIfExistsSymbol(/*S=*/nullptr, SS, NameInfo)) { - case Sema::IER_Exists: + case IfExistsResult::Exists: if (S->isIfExists()) break; return new (getSema().Context) NullStmt(S->getKeywordLoc()); - case Sema::IER_DoesNotExist: + case IfExistsResult::DoesNotExist: if (S->isIfNotExists()) break; return new (getSema().Context) NullStmt(S->getKeywordLoc()); - case Sema::IER_Dependent: + case IfExistsResult::Dependent: Dependent = true; break; - case Sema::IER_Error: + case IfExistsResult::Error: return StmtError(); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits