Home | History | Annotate | Download | only in Sema

Lines Matching refs:MD

436         CXXMethodDecl* MD = dyn_cast<CXXMethodDecl>(New);
437 if (MD && MD->getParent()->getDescribedClassTemplate()) {
718 const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewFD);
719 if (MD && MD->isInstance()) {
724 const CXXRecordDecl *RD = MD->getParent();
1528 const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(D);
1531 bool OverridesAreKnown = !MD ||
1532 (!MD->getParent()->hasAnyDependentBases() &&
1533 !MD->getType()->isDependentType());
1535 if (!MD || !MD->isVirtual()) {
1561 MD->begin_overridden_methods() != MD->end_overridden_methods();
1562 if (MD->hasAttr<OverrideAttr>() && !HasOverriddenMethods)
1563 Diag(MD->getLocation(), diag::err_function_marked_override_not_overriding)
1564 << MD->getDeclName();
1827 if (CXXMethodDecl *MD = dyn_cast_or_null<CXXMethodDecl>(Member))
1828 MD->setRangeEnd(VS.getLastLocation());
3908 CXXMethodDecl *MD) {
3911 if (MD->doesThisDeclarationHaveABody())
3917 if (TypeSourceInfo *TSI = MD->getTypeSourceInfo())
3918 Info.CheckType(MD, TSI->getTypeLoc(), Sema::AbstractNone);
4206 computeImplicitExceptionSpec(Sema &S, SourceLocation Loc, CXXMethodDecl *MD) {
4207 switch (S.getSpecialMember(MD)) {
4209 return S.ComputeDefaultedDefaultCtorExceptionSpec(Loc, MD);
4211 return S.ComputeDefaultedCopyCtorExceptionSpec(MD);
4213 return S.ComputeDefaultedCopyAssignmentExceptionSpec(MD);
4215 return S.ComputeDefaultedMoveCtorExceptionSpec(MD);
4217 return S.ComputeDefaultedMoveAssignmentExceptionSpec(MD);
4219 return S.ComputeDefaultedDtorExceptionSpec(MD);
4223 assert(cast<CXXConstructorDecl>(MD)->getInheritedConstructor() &&
4225 return S.ComputeInheritingCtorExceptionSpec(cast<CXXConstructorDecl>(MD));
4238 void Sema::EvaluateImplicitExceptionSpec(SourceLocation Loc, CXXMethodDecl *MD) {
4239 const FunctionProtoType *FPT = MD->getType()->castAs<FunctionProtoType>();
4245 computeImplicitExceptionSpec(*this, Loc, MD);
4248 updateExceptionSpec(*this, MD, FPT, ExceptSpec);
4254 MD->getCanonicalDecl()->getType()->castAs<FunctionProtoType>();
4256 updateExceptionSpec(*this, MD->getCanonicalDecl(),
4260 void Sema::CheckExplicitlyDefaultedSpecialMember(CXXMethodDecl *MD) {
4261 CXXRecordDecl *RD = MD->getParent();
4262 CXXSpecialMember CSM = getSpecialMember(MD);
4264 assert(MD->isExplicitlyDefaulted() && CSM != CXXInvalid &&
4269 bool First = MD == MD->getCanonicalDecl();
4283 if (MD->getNumParams() != ExpectedParams) {
4287 Diag(MD->getLocation(), diag::err_defaulted_special_member_params)
4288 << CSM << MD->getSourceRange();
4290 } else if (MD->isVariadic()) {
4291 Diag(MD->getLocation(), diag::err_defaulted_special_member_variadic)
4292 << CSM << MD->getSourceRange();
4296 const FunctionProtoType *Type = MD->getType()->getAs<FunctionProtoType>();
4311 Diag(MD->getLocation(), diag::err_defaulted_special_member_return_type)
4318 Diag(MD->getLocation(), diag::err_defaulted_special_member_quals)
4333 Diag(MD->getLocation(),
4340 Diag(MD->getLocation(),
4345 Diag(MD->getLocation(),
4355 Diag(MD->getLocation(), diag::err_defaulted_copy_assign_not_ref);
4367 if (isa<CXXConstructorDecl>(MD) && MD->isConstexpr() && !Constexpr &&
4368 MD->getTemplatedKind() == FunctionDecl::TK_NonTemplate) {
4369 Diag(MD->getLocStart(), diag::err_incorrect_defaulted_constexpr) << CSM;
4380 DelayedDefaultedMemberExceptionSpecs.push_back(std::make_pair(MD, Type));
4382 CheckExplicitlyDefaultedMemberExceptionSpec(MD, Type);
4389 MD->setConstexpr(Constexpr);
4395 EPI.ExceptionSpecDecl = MD;
4396 MD->setType(Context.getFunctionType(ReturnType,
4402 if (ShouldDeleteSpecialMember(MD, CSM)) {
4404 MD->setDeletedAsWritten();
4409 Diag(MD->getLocation(), diag::err_out_of_line_default_deletes) << CSM;
4415 MD->setInvalidDecl();
4423 CXXMethodDecl *MD, const FunctionProtoType *SpecifiedType) {
4426 computeImplicitExceptionSpec(*this, MD->getLocation(), MD).getEPI(EPI);
4433 << getSpecialMember(MD), PDiag(),
4435 SpecifiedType, MD->getLocation());
4451 CXXMethodDecl *MD;
4461 SpecialMemberDeletionInfo(Sema &S, CXXMethodDecl *MD,
4463 : S(S), MD(MD), CSM(CSM), Diagnose(Diagnose),
4465 ConstArg(false), VolatileArg(false), Loc(MD->getLocation()),
4489 if (MD->getNumParams()) {
4490 ConstArg = MD->getParamDecl(0)->getType().isConstQualified();
4491 VolatileArg = MD->getParamDecl(0)->getType().isVolatileQualified();
4495 bool inUnion() const { return MD->getParent()->isUnion(); }
4500 unsigned TQ = MD->getTypeQualifiers();
4507 MD->getRefQualifier() == RQ_RValue,
4537 objectTy = S.Context.getTypeDeclType(MD->getParent());
4581 << CSM << MD->getParent() << /*IsField*/true
4587 << CSM << MD->getParent() << /*IsField*/false
4657 << MD->getParent() << FD << FieldType << /*Reference*/0;
4669 << MD->getParent() << FD << FD->getType() << /*Const*/1;
4681 << MD->getParent() << FD << FieldType;
4689 << IsMove << MD->getParent() << FD << FieldType << /*Reference*/0;
4697 << IsMove << MD->getParent() << FD << FD->getType() << /*Const*/1;
4730 << MD->getParent() << /*anonymous union*/1;
4754 (MD->getParent()->field_begin() != MD->getParent()->field_end())) {
4756 S.Diag(MD->getParent()->getLocation(),
4758 << MD->getParent() << /*not anonymous union*/0;
4767 bool Sema::ShouldDeleteSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM,
4769 if (MD->isInvalidDecl())
4771 CXXRecordDecl *RD = MD->getParent();
4798 if (MD->isImplicit() &&
4842 ContextRAII MethodContext(*this, MD);
4847 if (CSM == CXXDestructor && MD->isVirtual()) {
4851 if (FindDeallocationFunction(MD->getLocation(), MD->getParent(), Name,
4859 SpecialMemberDeletionInfo SMI(*this, MD, CSM, Diagnose);
5154 bool Sema::SpecialMemberIsTrivial(CXXMethodDecl *MD, CXXSpecialMember CSM,
5156 assert(!MD->isUserProvided() && CSM != CXXInvalid && "not special enough");
5158 CXXRecordDecl *RD = MD->getParent();
5175 const ParmVarDecl *Param0 = MD->getParamDecl(0);
5191 const ParmVarDecl *Param0 = MD->getParamDecl(0);
5213 if (MD->getMinRequiredArguments() < MD->getNumParams()) {
5215 Diag(MD->getParamDecl(MD->getMinRequiredArguments())->getLocation(),
5217 << MD->getParamDecl(MD->getMinRequiredArguments())->getSourceRange();
5220 if (MD->isVariadic()) {
5222 Diag(MD->getLocation(), diag::note_nontrivial_variadic);
5261 if (CSM == CXXDestructor && MD->isVirtual()) {
5263 Diag(MD->getLocation(), diag::note_nontrivial_virtual_dtor) << RD;
5270 if (CSM != CXXDestructor && MD->getParent()->isDynamicClass()) {
5310 /// \brief Check whether any most overriden method from MD in Methods
5311 static bool CheckMostOverridenMethods(const CXXMethodDecl *MD,
5313 if (MD->size_overridden_methods() == 0)
5314 return Methods.count(MD->getCanonicalDecl());
5315 for (CXXMethodDecl::method_iterator I = MD->begin_overridden_methods(),
5316 E = MD->end_overridden_methods();
5343 if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(D)) {
5344 MD = MD->getCanonicalDecl();
5347 if (!MD->isVirtual())
5351 if (!Data.S->IsOverload(Data.Method, MD, false))
5354 if (!CheckMostOverridenMethods(MD, Data.OverridenAndUsingBaseMethods))
5355 overloadedMethods.push_back(MD);
5365 /// \brief Add the most overriden methods from MD to Methods
5366 static void AddMostOverridenMethods(const CXXMethodDecl *MD,
5368 if (MD->size_overridden_methods() == 0)
5369 Methods.insert(MD->getCanonicalDecl());
5370 for (CXXMethodDecl::method_iterator I = MD->begin_overridden_methods(),
5371 E = MD->end_overridden_methods();
5378 void Sema::DiagnoseHiddenVirtualMethods(CXXRecordDecl *DC, CXXMethodDecl *MD) {
5380 MD->getLocation()) == DiagnosticsEngine::Ignored)
5382 if (!MD->getDeclName().isIdentifier())
5389 Data.Method = MD;
5394 DeclContext::lookup_result R = DC->lookup(MD->getDeclName());
5399 if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(ND))
5400 AddMostOverridenMethods(MD, Data.OverridenAndUsingBaseMethods);
5405 Diag(MD->getLocation(), diag::warn_overloaded_virtual)
5406 << MD << (Data.OverloadedMethods.size() > 1);
7422 CXXMethodDecl *MD) {
7423 CXXRecordDecl *ClassDecl = MD->getParent();
7485 Diag(Loc, diag::err_in_class_initializer_references_def_ctor) << MD;
7504 Sema::ComputeInheritingCtorExceptionSpec(CXXMethodDecl *MD) {
7870 Sema::ComputeDefaultedDtorExceptionSpec(CXXMethodDecl *MD) {
7871 CXXRecordDecl *ClassDecl = MD->getParent();
8355 Sema::ComputeDefaultedCopyAssignmentExceptionSpec(CXXMethodDecl *MD) {
8356 CXXRecordDecl *ClassDecl = MD->getParent();
8362 const FunctionProtoType *T = MD->getType()->castAs<FunctionProtoType>();
8702 Sema::ComputeDefaultedMoveAssignmentExceptionSpec(CXXMethodDecl *MD) {
8703 CXXRecordDecl *ClassDecl = MD->getParent();
9160 Sema::ComputeDefaultedCopyCtorExceptionSpec(CXXMethodDecl *MD) {
9161 CXXRecordDecl *ClassDecl = MD->getParent();
9167 const FunctionProtoType *T = MD->getType()->castAs<FunctionProtoType>();
9326 Sema::ComputeDefaultedMoveCtorExceptionSpec(CXXMethodDecl *MD) {
9327 CXXRecordDecl *ClassDecl = MD->getParent();
11007 CXXMethodDecl *MD = dyn_cast_or_null<CXXMethodDecl>(Dcl);
11009 if (MD) {
11010 if (MD->getParent()->isDependentType()) {
11011 MD->setDefaulted();
11012 MD->setExplicitlyDefaulted();
11016 CXXSpecialMember Member = getSpecialMember(MD);
11022 MD->setDefaulted();
11023 MD->setExplicitlyDefaulted();
11027 const FunctionDecl *Primary = MD;
11028 if (const FunctionDecl *Pattern = MD->getTemplateInstantiationPattern())
11036 CheckExplicitlyDefaultedSpecialMember(MD);
11041 MD->getType()->castAs<FunctionProtoType>());
11045 CXXConstructorDecl *CD = cast<CXXConstructorDecl>(MD);
11052 CXXConstructorDecl *CD = cast<CXXConstructorDecl>(MD);
11059 if (!MD->isInvalidDecl())
11060 DefineImplicitCopyAssignment(DefaultLoc, MD);
11065 CXXDestructorDecl *DD = cast<CXXDestructorDecl>(MD);
11072 CXXConstructorDecl *CD = cast<CXXConstructorDecl>(MD);
11079 if (!MD->isInvalidDecl())
11080 DefineImplicitMoveAssignment(DefaultLoc, MD);