Author: Matheus Izvekov Date: 2026-09-04T11:57:07-03:00 New Revision: ca7890e9f76dc6ec709c5c452f7761bf0ab67625
URL: https://github.com/llvm/llvm-project/commit/ca7890e9f76dc6ec709c5c452f7761bf0ab67625 DIFF: https://github.com/llvm/llvm-project/commit/ca7890e9f76dc6ec709c5c452f7761bf0ab67625.diff LOG: [clang] remove unused NestedNameSpecifier 'Invalid' constructor (#221128) These invalid NNS were used as thombstone keys for DenseMap, but the DenseMap implementation changed and that's not needed anymore. Added: Modified: clang/include/clang/AST/NestedNameSpecifier.h clang/include/clang/AST/NestedNameSpecifierBase.h clang/lib/AST/ASTImporter.cpp Removed: ################################################################################ diff --git a/clang/include/clang/AST/NestedNameSpecifier.h b/clang/include/clang/AST/NestedNameSpecifier.h index b7d24d5397077..f13351f0d5d3e 100644 --- a/clang/include/clang/AST/NestedNameSpecifier.h +++ b/clang/include/clang/AST/NestedNameSpecifier.h @@ -28,8 +28,6 @@ auto NestedNameSpecifier::getKind() const -> Kind { return Kind::Null; case FlagKind::Global: return Kind::Global; - case FlagKind::Invalid: - llvm_unreachable("use of invalid NestedNameSpecifier"); } llvm_unreachable("unhandled FlagKind"); } diff --git a/clang/include/clang/AST/NestedNameSpecifierBase.h b/clang/include/clang/AST/NestedNameSpecifierBase.h index 3330fed58ba79..5d883246252a1 100644 --- a/clang/include/clang/AST/NestedNameSpecifierBase.h +++ b/clang/include/clang/AST/NestedNameSpecifierBase.h @@ -49,7 +49,7 @@ struct alignas(8) NamespaceAndPrefixStorage; /// the global specifier ('::'). The last two specifiers can only appear at the /// start of a nested-namespace-specifier. class NestedNameSpecifier { - enum class FlagKind { Null, Global, Invalid }; + enum class FlagKind { Null, Global }; enum class StoredKind { Type, NamespaceOrSuper, @@ -100,15 +100,11 @@ class NestedNameSpecifier { NestedNameSpecifier Prefix); public: - static constexpr NestedNameSpecifier getInvalid() { - return NestedNameSpecifier(FlagKind::Invalid); - } - static constexpr NestedNameSpecifier getGlobal() { return NestedNameSpecifier(FlagKind::Global); } - NestedNameSpecifier() : NestedNameSpecifier(FlagKind::Invalid) {} + NestedNameSpecifier() = delete; /// The kind of specifier that completes this nested name /// specifier. diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index 5778b0996c36a..22c3af47f451f 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -1638,16 +1638,18 @@ ASTNodeImporter::VisitFunctionProtoType(const FunctionProtoType *T) { ExpectedType ASTNodeImporter::VisitUnresolvedUsingType( const UnresolvedUsingType *T) { - Error Err = Error::success(); - auto ToQualifier = importChecked(Err, T->getQualifier()); - auto *ToD = importChecked(Err, T->getDecl()); - if (Err) - return std::move(Err); + auto ToQualifierOrErr = import(T->getQualifier()); + if (!ToQualifierOrErr) + return ToQualifierOrErr.takeError(); + auto ToDeclOrErr = import(T->getDecl()); + if (!ToDeclOrErr) + return ToDeclOrErr.takeError(); if (T->isCanonicalUnqualified()) - return Importer.getToContext().getCanonicalUnresolvedUsingType(ToD); - return Importer.getToContext().getUnresolvedUsingType(T->getKeyword(), - ToQualifier, ToD); + return Importer.getToContext().getCanonicalUnresolvedUsingType( + *ToDeclOrErr); + return Importer.getToContext().getUnresolvedUsingType( + T->getKeyword(), *ToQualifierOrErr, *ToDeclOrErr); } ExpectedType ASTNodeImporter::VisitParenType(const ParenType *T) { @@ -1704,14 +1706,18 @@ ExpectedType ASTNodeImporter::VisitTypeOfType(const TypeOfType *T) { } ExpectedType ASTNodeImporter::VisitUsingType(const UsingType *T) { - Error Err = Error::success(); - auto ToQualifier = importChecked(Err, T->getQualifier()); - auto *ToD = importChecked(Err, T->getDecl()); - QualType ToT = importChecked(Err, T->desugar()); - if (Err) - return std::move(Err); - return Importer.getToContext().getUsingType(T->getKeyword(), ToQualifier, ToD, - ToT); + auto ToQualifierOrErr = import(T->getQualifier()); + if (!ToQualifierOrErr) + return ToQualifierOrErr.takeError(); + auto ToDeclOrErr = import(T->getDecl()); + if (!ToDeclOrErr) + return ToDeclOrErr.takeError(); + + ExpectedType ToTypeOrErr = import(T->desugar()); + if (!ToTypeOrErr) + return ToTypeOrErr.takeError(); + return Importer.getToContext().getUsingType( + T->getKeyword(), *ToQualifierOrErr, *ToDeclOrErr, *ToTypeOrErr); } ExpectedType ASTNodeImporter::VisitDecltypeType(const DecltypeType *T) { _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
