File tree Expand file tree Collapse file tree 5 files changed +55
-1
lines changed Expand file tree Collapse file tree 5 files changed +55
-1
lines changed Original file line number Diff line number Diff line change @@ -812,7 +812,8 @@ void Sema::ProcessAPINotes(Decl *D) {
812812
813813 // Globals.
814814 if (D->getDeclContext ()->isFileContext () ||
815- D->getDeclContext ()->isExternCContext ()) {
815+ D->getDeclContext ()->isExternCContext () ||
816+ D->getDeclContext ()->isExternCXXContext ()) {
816817 // Global variables.
817818 if (auto VD = dyn_cast<VarDecl>(D)) {
818819 for (auto Reader : APINotes.findAPINotes (D->getLocation ())) {
Original file line number Diff line number Diff line change 1+ Name: ExternCtx
2+ Globals:
3+ - Name: globalInExternC
4+ Availability: none
5+ AvailabilityMsg: "oh no"
6+ - Name: globalInExternCXX
7+ Availability: none
8+ AvailabilityMsg: "oh no #2"
9+ Functions:
10+ - Name: globalFuncInExternC
11+ Availability: none
12+ AvailabilityMsg: "oh no #3"
13+ - Name: globalFuncInExternCXX
14+ Availability: none
15+ AvailabilityMsg: "oh no #4"
Original file line number Diff line number Diff line change 1+ extern "C" {
2+ static int globalInExternC = 1 ;
3+
4+ static void globalFuncInExternC () {}
5+ }
6+
7+ extern "C++" {
8+ static int globalInExternCXX = 2 ;
9+
10+ static void globalFuncInExternCXX () {}
11+ }
Original file line number Diff line number Diff line change 1+ module ExternCtx {
2+ header "ExternCtx.h"
3+ }
4+
15module HeaderLib {
26 header "HeaderLib.h"
37}
Original file line number Diff line number Diff line change 1+ // RUN: rm -rf %t && mkdir -p %t
2+ // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -fsyntax-only -I %S/Inputs/Headers %s -ast-dump -ast-dump-filter globalInExternC -x c++ | FileCheck -check-prefix=CHECK-EXTERN-C %s
3+ // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -fsyntax-only -I %S/Inputs/Headers %s -ast-dump -ast-dump-filter globalInExternCXX -x c++ | FileCheck -check-prefix=CHECK-EXTERN-CXX %s
4+ // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -fsyntax-only -I %S/Inputs/Headers %s -ast-dump -ast-dump-filter globalFuncInExternC -x c++ | FileCheck -check-prefix=CHECK-FUNC-EXTERN-C %s
5+ // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fdisable-module-hash -fapinotes-modules -fsyntax-only -I %S/Inputs/Headers %s -ast-dump -ast-dump-filter globalFuncInExternCXX -x c++ | FileCheck -check-prefix=CHECK-FUNC-EXTERN-CXX %s
6+
7+ #include " ExternCtx.h"
8+
9+ // CHECK-EXTERN-C: Dumping globalInExternC:
10+ // CHECK-EXTERN-C: VarDecl {{.+}} imported in ExternCtx globalInExternC 'int'
11+ // CHECK-EXTERN-C: UnavailableAttr {{.+}} <<invalid sloc>> "oh no"
12+
13+ // CHECK-EXTERN-CXX: Dumping globalInExternCXX:
14+ // CHECK-EXTERN-CXX: VarDecl {{.+}} imported in ExternCtx globalInExternCXX 'int'
15+ // CHECK-EXTERN-CXX: UnavailableAttr {{.+}} <<invalid sloc>> "oh no #2"
16+
17+ // CHECK-FUNC-EXTERN-C: Dumping globalFuncInExternC:
18+ // CHECK-FUNC-EXTERN-C: FunctionDecl {{.+}} imported in ExternCtx globalFuncInExternC 'void ()'
19+ // CHECK-FUNC-EXTERN-C: UnavailableAttr {{.+}} <<invalid sloc>> "oh no #3"
20+
21+ // CHECK-FUNC-EXTERN-CXX: Dumping globalFuncInExternCXX:
22+ // CHECK-FUNC-EXTERN-CXX: FunctionDecl {{.+}} imported in ExternCtx globalFuncInExternCXX 'void ()'
23+ // CHECK-FUNC-EXTERN-CXX: UnavailableAttr {{.+}} <<invalid sloc>> "oh no #4"
You can’t perform that action at this time.
0 commit comments