// RUN: rm -rf %t // RUN: split-file %s %t /// Check that: /// - Quoted includes ("...") trigger the diagnostic. /// - System headers are ignored. /// - #include_next does not cause a duplicate warning. // RUN: %clang_cc1 -Wshadow-header -Eonly %t/main.c -I %t/include1 -I %t/include2 \ // RUN: -isystem %t/system1 -isystem %t/system2 2>&1 | FileCheck %s --check-prefix=SHADOWING // SHADOWING: {{.*}} warning: multiple candidates for header 'header.h' found; directory '{{.*}}include1' chosen, ignoring others including '{{.*}}include2' [-Wshadow-header] // SHADOWING: warning: include1/header.h included! // SHADOWING-NOT: {{.*}} warning: multiple candidates for header 'header.h' found; directory '{{.*}}include2' chosen, ignoring others including '{{.*}}include1' [-Wshadow-header] // SHADOWING: warning: include2/header.h included! // SHADOWING-NOT: {{.*}} warning: multiple candidates for header 'stdio.h' found; directory '{{.*}}system1' chosen, ignoring others including '{{.*}}system2' [-Wshadow-header] // SHADOWING: warning: system1/stdio.h included! /// Check that the diagnostic is only performed once in MSVC compatibility mode. // RUN: %clang_cc1 -fms-compatibility -Wshadow-header -Eonly %t/t.c 2>&1 | FileCheck %s --check-prefix=SHADOWING-MS // SHADOWING-MS: {{.*}} warning: multiple candidates for header 't3.h' found; directory '{{.*}}foo' chosen, ignoring others including '{{.*}}' [-Wshadow-header] // SHADOWING-MS-NOT: {{.*}} warning: multiple candidates for header 't3.h' found; directory '{{.*}}' chosen, ignoring others including '{{.*}}foo' [-Wshadow-header] // SHADOWING-MS: warning: Found foo/t3.h. //--- main.c #include "header.h" #include //--- include1/header.h #warning include1/header.h included! #include_next "header.h" //--- include2/header.h #warning include2/header.h included! //--- system1/stdio.h #warning system1/stdio.h included! //--- system2/stdio.h #warning system2/stdio.h included! /// Used to test when running in MSVC compatibility //--- t.c #include "foo/t1.h" //--- foo/t1.h #include "bar/t2.h" //--- foo/bar/t2.h #include "t3.h" //--- foo/t3.h #warning Found foo/t3.h. //--- t3.h #warning Found t3.h.