blob: ff8a986643993f8704dd92c42e267cb515306c61 [file] [log] [blame]
// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.in > %t/cdb.json
//--- cdb.json.in
[{
"directory": "DIR",
"command": "clang -c DIR/tu.c -o DIR/tu.o -IDIR/include",
"file": "DIR/tu.c"
}]
//--- include/header.h
//--- include/header2.h
//--- include/header3.h
//--- include/header4.h
//--- include/header5.h
//--- include/header6.h
//--- include/header7.h
//--- include/header8.h
//--- include/header9.h
//--- include/header10.h
//--- include/header11.h
//--- include/header12.h
//--- include/header13.h
//--- include/header14.h
//--- tu.c
#if 0
R"x()x"
#endif
#include "header.h"
#if 0
R"y(";
#endif
#include "header2.h"
#if 0
//")y"
#endif
#if 0
R"y(";
R"z()y";
#endif
#include "header3.h"
#if 0
//")z"
#endif
#if 0
R\
"y(";
R"z()y";
#endif
#include "header4.h"
#if 0
//")z"
#endif
// Test u8 prefix with escaped newline
#if 0
u8R\
"prefix(test)prefix"
#endif
#include "header5.h"
// Test u prefix with multiple escaped newlines
#if 0
uR\
\
"multi(test)multi"
#endif
#include "header6.h"
// Test U prefix with escaped newline
#if 0
UR\
"upper(test)upper"
#endif
#include "header7.h"
// Test L prefix with escaped newline
#if 0
LR\
"wide(test)wide"
#endif
#include "header8.h"
// Test escaped newline with \r\n style
#if 0
R\
"crlf(test)crlf"
#endif
#include "header9.h"
// Test multiple escaped newlines in different positions
#if 0
u\
8\
R\
"complex(test)complex"
#endif
#include "header10.h"
// Test raw string that should NOT be treated as raw (no R prefix due to identifier continuation)
#if 0
identifierR"notraw(test)notraw"
#endif
#include "header11.h"
// Test raw string with whitespace before escaped newline
#if 0
R \
"whitespace(test)whitespace"
#endif
#include "header12.h"
// Test nested raw strings in disabled code
#if 0
R"outer(
R"inner(content)inner"
)outer"
#endif
#include "header13.h"
// Test raw string with empty delimiter
#if 0
R\
"(empty delimiter)";
#endif
#include "header14.h"
// RUN: clang-scan-deps -compilation-database %t/cdb.json -mode preprocess | FileCheck %s
// RUN: clang-scan-deps -compilation-database %t/cdb.json -mode preprocess-dependency-directives | FileCheck %s
// CHECK: tu.c
// CHECK-NEXT: header.h
// CHECK-NEXT: header3.h
// CHECK-NEXT: header4.h
// CHECK-NEXT: header5.h
// CHECK-NEXT: header6.h
// CHECK-NEXT: header7.h
// CHECK-NEXT: header8.h
// CHECK-NEXT: header9.h
// CHECK-NEXT: header10.h
// CHECK-NEXT: header11.h
// CHECK-NEXT: header12.h
// CHECK-NEXT: header13.h
// CHECK-NEXT: header14.h