// RUN: rm -rf %t // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -verify %s // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -ast-dump-all %s | FileCheck %s // expected-no-diagnostics #pragma clang module build bounds_safety module bounds_safety {} #pragma clang module contents #pragma clang module begin bounds_safety struct Test { int count; int fam[] __attribute__((counted_by(count))); }; #pragma clang module end #pragma clang module endbuild #pragma clang module import bounds_safety struct Test *p; // CHECK: |-RecordDecl {{.*}}bounds_safety.map:4:1, line:7:1> line:4:8 imported in bounds_safety struct Test definition // CHECK: | |-FieldDecl {{.*}} imported in bounds_safety referenced count 'int' // CHECK: | `-FieldDecl {{.*}} imported in bounds_safety fam 'int[] __counted_by(count)':'int[]' // CHECK: |-ImportDecl {{.*}}bounds-safety-attributed-type.c:17:22> col:22 implicit bounds_safety // CHECK: |-RecordDecl {{.*}} struct Test // CHECK: `-VarDecl {{.*}} p 'struct Test *'