Remove some oogly code made dead by the pseudo-destructor

instantiation changes.

llvm-svn: 97095
This commit is contained in:
Douglas Gregor 2010-02-25 02:00:27 +00:00
parent c36ab923c6
commit 6aade28fd3
1 changed files with 0 additions and 44 deletions

View File

@ -2900,50 +2900,6 @@ Sema::LookupMemberExpr(LookupResult &R, Expr *&BaseExpr,
return Owned((Expr*) 0);
}
// Handle pseudo-destructors (C++ [expr.pseudo]). Since anything referring
// into a record type was handled above, any destructor we see here is a
// pseudo-destructor.
if (MemberName.getNameKind() == DeclarationName::CXXDestructorName) {
// C++ [expr.pseudo]p2:
// The left hand side of the dot operator shall be of scalar type. The
// left hand side of the arrow operator shall be of pointer to scalar
// type.
if (!BaseType->isScalarType())
return Owned(Diag(OpLoc, diag::err_pseudo_dtor_base_not_scalar)
<< BaseType << BaseExpr->getSourceRange());
// [...] The type designated by the pseudo-destructor-name shall be the
// same as the object type.
if (!MemberName.getCXXNameType()->isDependentType() &&
!Context.hasSameUnqualifiedType(BaseType, MemberName.getCXXNameType()))
return Owned(Diag(OpLoc, diag::err_pseudo_dtor_type_mismatch)
<< BaseType << MemberName.getCXXNameType()
<< BaseExpr->getSourceRange() << SourceRange(MemberLoc));
// [...] Furthermore, the two type-names in a pseudo-destructor-name of
// the form
//
// ::[opt] nested-name-specifier[opt] type-name :: ̃ type-name
//
// shall designate the same scalar type.
//
// FIXME: DPG can't see any way to trigger this particular clause, so it
// isn't checked here.
// FIXME: We've lost the precise spelling of the type by going through
// DeclarationName. Can we do better?
TypeSourceInfo *DestroyedTypeInfo
= Context.getTrivialTypeSourceInfo(MemberName.getCXXNameType(),
MemberLoc);
return Owned(new (Context) CXXPseudoDestructorExpr(Context, BaseExpr,
IsArrow, OpLoc,
(NestedNameSpecifier *) SS.getScopeRep(),
SS.getRange(),
0, SourceLocation(),
MemberLoc,
DestroyedTypeInfo));
}
// Handle access to Objective-C instance variables, such as "Obj->ivar" and
// (*Obj).ivar.
if ((IsArrow && BaseType->isObjCObjectPointerType()) ||