Index: lib/Sema/SemaDeclAttr.cpp |
diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp |
index 54e7969e0d40326b8911bd0f8e196e6d9a3e8286..f0830b8861a0b1b23d786fb36efe2e511f2130b5 100644 |
--- a/lib/Sema/SemaDeclAttr.cpp |
+++ b/lib/Sema/SemaDeclAttr.cpp |
@@ -283,6 +283,9 @@ static bool checkForLockableRecord(Sema &S, Decl *D, const AttributeList &Attr, |
<< Attr.getName(); |
return false; |
} |
+ // Don't check for lockable if the class hasn't been defined yet. |
+ if (RT->isIncompleteType()) |
+ return true; |
// Flag error if the type is not lockable. |
if (!RT->getDecl()->getAttr<LockableAttr>()) { |
S.Diag(Attr.getLoc(), diag::err_attribute_argument_not_lockable) |