149 lines
2.5 KiB
C++
149 lines
2.5 KiB
C++
// 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
|