diff options
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 31d69cbac35..81c56c2f2c6 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -9128,8 +9128,18 @@ TreeTransform<Derived>::TransformUnresolvedLookupExpr( // If we have neither explicit template arguments, nor the template keyword, // it's a normal declaration name. - if (!Old->hasExplicitTemplateArgs() && !TemplateKWLoc.isValid()) + if (!Old->hasExplicitTemplateArgs() && !TemplateKWLoc.isValid()) { + // If an UnresolvedLookupExpr resolved to an instance member, that's an + // error. + NamedDecl *D = R.getAsSingle<NamedDecl>(); + if (D && D->isCXXInstanceMember()) { + SemaRef.DiagnoseInstanceReference(SS, D, Old->getNameInfo()); + R.clear(); + return ExprError(); + } + return getDerived().RebuildDeclarationNameExpr(SS, R, Old->requiresADL()); + } // If we have template arguments, rebuild them, then rebuild the // templateid expression. |