================
@@ -19,13 +19,12 @@ struct on_member_pointer_complete_ty {
 };
 
 struct on_member_pointer_incomplete_ty {
-  struct size_unknown * buf __counted_by(count); // 
expected-error{{'counted_by' cannot be applied to a pointer with pointee of 
unknown size because 'struct size_unknown' is an incomplete type}}
+  struct size_unknown * buf __counted_by(count); // ok
----------------
delcypher wrote:

@AaronBallman I should have also noted the current design also allows for 
headers that deliberately don't provide complete types to reduce compile times 
which I believe is fairly common practice.

E.g.

```
// some_data.h

struct SomeData {
 int value;
};

// list_handle.h

// Forward declare to avoid needing to include `some_data.h`
struct SomeData;

struct ListHandle {
  struct SomeData* __counted_by(count) items;
  size_t count;
};
```


https://github.com/llvm/llvm-project/pull/106321
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to