diff options
Diffstat (limited to 'lib/Sema/TreeTransform.h')
-rw-r--r-- | lib/Sema/TreeTransform.h | 11 |
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()); } |