mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-14 03:29:57 +00:00
Now that DeclRefExpr accepts a NamedDecl, use a DeclRefExpr for when a CXXFieldDecl is referenced inside a method.
llvm-svn: 58000
This commit is contained in:
parent
9a96bf22ec
commit
2147e7d88b
@ -325,7 +325,7 @@ bool Expr::hasLocalSideEffect() const {
|
||||
/// DeclCanBeLvalue - Determine whether the given declaration can be
|
||||
/// an lvalue. This is a helper routine for isLvalue.
|
||||
static bool DeclCanBeLvalue(const NamedDecl *Decl, ASTContext &Ctx) {
|
||||
return isa<VarDecl>(Decl) ||
|
||||
return isa<VarDecl>(Decl) || isa<CXXFieldDecl>(Decl) ||
|
||||
// C++ 3.10p2: An lvalue refers to an object or function.
|
||||
(Ctx.getLangOptions().CPlusPlus &&
|
||||
(isa<FunctionDecl>(Decl) || isa<OverloadedFunctionDecl>(Decl)));
|
||||
|
@ -402,10 +402,7 @@ Sema::ExprResult Sema::ActOnIdentifierExpr(Scope *S, SourceLocation Loc,
|
||||
if (FD->isInvalidDecl())
|
||||
return true;
|
||||
|
||||
// FIXME: Use DeclRefExpr or a new Expr for a direct CXXField reference.
|
||||
ExprResult ThisExpr = ActOnCXXThis(SourceLocation());
|
||||
return new MemberExpr(static_cast<Expr*>(ThisExpr.Val),
|
||||
true, FD, Loc, FD->getType());
|
||||
return new DeclRefExpr(FD, FD->getType(), Loc);
|
||||
}
|
||||
|
||||
return Diag(Loc, diag::err_invalid_non_static_member_use, FD->getName());
|
||||
|
Loading…
Reference in New Issue
Block a user