aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Sema/TreeTransform.h')
-rw-r--r--lib/Sema/TreeTransform.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index 7fb2d35c70..6fb1315c2e 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -2145,11 +2145,17 @@ public:
CXXScopeSpec SS;
SS.Adopt(QualifierLoc);
- if (BaseE && IsArrow) {
- ExprResult BaseResult = getSema().DefaultLvalueConversion(BaseE);
+ if (BaseE) {
+ ExprResult BaseResult = getSema().DefaultFunctionArrayConversion(BaseE);
if (BaseResult.isInvalid())
return ExprError();
+ if (IsArrow) {
+ BaseResult = getSema().DefaultLvalueConversion(BaseResult.take());
+ if (BaseResult.isInvalid())
+ return ExprError();
+ }
BaseE = BaseResult.take();
+ BaseType = BaseE->getType();
}
return SemaRef.BuildMemberReferenceExpr(BaseE, BaseType,
@@ -7701,7 +7707,6 @@ TreeTransform<Derived>::TransformUnresolvedMemberExpr(UnresolvedMemberExpr *Old)
Base = getDerived().TransformExpr(Old->getBase());
if (Base.isInvalid())
return ExprError();
- BaseType = ((Expr*) Base.get())->getType();
} else {
BaseType = getDerived().TransformType(Old->getBaseType());
}