================
@@ -6608,6 +6608,43 @@ TEST_P(ErrorHandlingTest,
ErrorIsPropagatedFromMemberToClass) {
EXPECT_FALSE(ImportedOK);
}
+// A member whose signature refers back to the enclosing class (e.g. a
+// copy constructor's `const Self&` parameter) can succeed and cache the
+// class's *type* before a later, failing member causes the class's own
+// Decl import to fail as a whole. Check that this doesn't leave a stale,
+// "successfully imported" entry for the class's type behind: any later,
+// independent request to import that type must also fail, not silently
+// hand back the half-built class.
+TEST_P(ErrorHandlingTest, ImportedTypeCacheIsInvalidatedOnFailure) {
+ TranslationUnitDecl *FromTU = getTuDecl(std::string(R"(
+ class X {
+ void ok(const X &) {} // Succeeds; imports X's own type
+ // as a side effect, before X's
+ // own import is known to fail.
----------------
steakhal wrote:
Can you reflow the comment? Maybe even clangformat this snippet.
https://github.com/llvm/llvm-project/pull/214008
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits