diff options
Diffstat (limited to 'lib/Sema/TreeTransform.h')
-rw-r--r-- | lib/Sema/TreeTransform.h | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index 2f36807659..cca14caa44 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -5336,19 +5336,16 @@ TreeTransform<Derived>::TransformUnresolvedLookupExpr( SS.setScopeRep(Qualifier); SS.setRange(Old->getQualifierRange()); - - // If this nested-name-specifier refers to a class type, that is the - // naming class. - if (const Type *NamedType = Qualifier->getAsType()) - if (const RecordType *NamedRecord = NamedType->getAs<RecordType>()) - R.setNamingClass(cast<CXXRecordDecl>(NamedRecord->getDecl())); - } else if (Old->getNamingClass()) { + } + + if (Old->getNamingClass()) { CXXRecordDecl *NamingClass = cast_or_null<CXXRecordDecl>(getDerived().TransformDecl( Old->getNameLoc(), Old->getNamingClass())); if (!NamingClass) return SemaRef.ExprError(); + R.setNamingClass(NamingClass); } @@ -5735,7 +5732,6 @@ TreeTransform<Derived>::TransformUnresolvedMemberExpr(UnresolvedMemberExpr *Old) BaseType = getDerived().TransformType(Old->getBaseType()); } - CXXRecordDecl *NamingClass = 0; NestedNameSpecifier *Qualifier = 0; if (Old->getQualifier()) { Qualifier @@ -5743,12 +5739,6 @@ TreeTransform<Derived>::TransformUnresolvedMemberExpr(UnresolvedMemberExpr *Old) Old->getQualifierRange()); if (Qualifier == 0) return SemaRef.ExprError(); - - // If this nested-name-specifier refers to a class type, that is the - // naming class. - if (const Type *NamedType = Qualifier->getAsType()) - if (const RecordType *NamedRecord = NamedType->getAs<RecordType>()) - NamingClass = cast<CXXRecordDecl>(NamedRecord->getDecl()); } LookupResult R(SemaRef, Old->getMemberName(), Old->getMemberLoc(), @@ -5783,24 +5773,17 @@ TreeTransform<Derived>::TransformUnresolvedMemberExpr(UnresolvedMemberExpr *Old) R.resolveKind(); - // Determine the naming class, if we haven't already. - if (!NamingClass) { - QualType T = BaseType; - if (const PointerType *PointerTy = T->getAs<PointerType>()) - T = PointerTy->getPointeeType(); - if (const RecordType *NamedRecord = T->getAs<RecordType>()) - NamingClass = cast<CXXRecordDecl>(NamedRecord->getDecl()); - } - - if (!NamingClass && Old->getNamingClass()) { - NamingClass = cast_or_null<CXXRecordDecl>(getDerived().TransformDecl( + // Determine the naming class. + if (!Old->getNamingClass()) { + CXXRecordDecl *NamingClass + = cast_or_null<CXXRecordDecl>(getDerived().TransformDecl( Old->getMemberLoc(), Old->getNamingClass())); if (!NamingClass) return SemaRef.ExprError(); - } - if (NamingClass) + R.setNamingClass(NamingClass); + } TemplateArgumentListInfo TransArgs; if (Old->hasExplicitTemplateArgs()) { |