[clang] [clang] ASTContext: flesh out implementation of getCommonNNS (PR #131964)
Matheus Izvekov via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 19 07:38:36 PDT 2025
================
@@ -13462,13 +13462,114 @@ static ElaboratedTypeKeyword getCommonTypeKeyword(const T *X, const T *Y) {
: ElaboratedTypeKeyword::None;
}
+static NestedNameSpecifier *getCommonNNS(ASTContext &Ctx,
+ NestedNameSpecifier *X,
+ NestedNameSpecifier *Y, bool IsSame) {
+ if (X == Y)
+ return X;
+
+ NestedNameSpecifier *Canon = Ctx.getCanonicalNestedNameSpecifier(X);
+ if (Canon != Ctx.getCanonicalNestedNameSpecifier(Y)) {
+ assert(!IsSame && "Should be the same NestedNameSpecifier");
+ return nullptr;
----------------
mizvekov wrote:
I would actually prefer to trap here, the original behavior with unreachable, instead of assert is more desirable.
If we get here, we probably have a canonicalization bug somewhere, and in any case we could produce a different type instead of a different sugaring as intended.
https://github.com/llvm/llvm-project/pull/131964
More information about the cfe-commits
mailing list