Skip to content

Commit 4bb6e92

Browse files
author
Anders Carlsson
committed
Diagnose access to fields with private constructors.
llvm-svn: 102025
1 parent 4fdba13 commit 4bb6e92

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,9 @@ def err_access_ctor :
462462
def err_access_ctor_base :
463463
Error<"base class %0 has %select{private|protected}1 constructor">,
464464
NoSFINAE;
465+
def err_access_ctor_field :
466+
Error<"field of type %1 has %select{private|protected}2 constructor">,
467+
NoSFINAE;
465468
def err_access_ctor_vbase :
466469
Error<"inherited virtual base class %0 has "
467470
"%select{private|protected}1 constructor">,

clang/lib/Sema/SemaAccess.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,6 +1150,13 @@ Sema::AccessResult Sema::CheckConstructorAccess(SourceLocation UseLoc,
11501150
<< Entity.getBaseSpecifier()->getType());
11511151
break;
11521152
}
1153+
1154+
case InitializedEntity::EK_Member: {
1155+
const FieldDecl *Field = cast<FieldDecl>(Entity.getDecl());
1156+
AccessEntity.setDiag(PDiag(diag::err_access_ctor_field)
1157+
<< Field->getDeclName() << Field->getType());
1158+
break;
1159+
}
11531160

11541161
}
11551162

0 commit comments

Comments
 (0)