39 lines · c
1// RUN: %clang_cc1 -std=c23 %s --embed-dir=%S/Inputs -fsyntax-only -verify2 3const char data[] = {4#embed <single_byte.txt> prefix('\xA', )5};6const char empty_data[] = {7#embed <media/empty> prefix('\xA', )819};10static_assert(sizeof(data) == 2);11static_assert('\xA' == data[0]);12static_assert('b' == data[1]);13static_assert(sizeof(empty_data) == 1);14static_assert(1 == empty_data[0]);15 16struct S {17 int x, y, z;18};19 20const struct S s = {21#embed <single_byte.txt> prefix( .x = 100, .y = 10, )22};23static_assert(s.x == 100);24static_assert(s.y == 10);25static_assert(s.z == 'b');26 27// Ensure that an empty file does not produce any prefix tokens. If it did,28// there would be random tokens here that the parser would trip on.29#embed <media/empty> prefix(0)30 31// Ensure we diagnose duplicate parameters even if they're the same value.32const unsigned char a[] = {33#embed <jk.txt> prefix(1,) limit(1) prefix(1,)34// expected-error@-1 {{cannot specify parameter 'prefix' twice in the same '#embed' directive}}35,36#embed <jk.txt> prefix(1,) if_empty() prefix(2,)37// expected-error@-1 {{cannot specify parameter 'prefix' twice in the same '#embed' directive}}38};39