1//===----- SemaPseudoObject.h --- Semantic Analysis for Pseudo-Objects ----===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8/// \file
9/// This file declares semantic analysis for expressions involving
10// pseudo-object references.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CLANG_SEMA_SEMAPSEUDOOBJECT_H
15#define LLVM_CLANG_SEMA_SEMAPSEUDOOBJECT_H
16
17#include "clang/AST/ASTFwd.h"
18#include "clang/AST/OperationKinds.h"
19#include "clang/Basic/SourceLocation.h"
20#include "clang/Sema/Ownership.h"
21#include "clang/Sema/SemaBase.h"
22
23namespace clang {
24class Scope;
25
26class SemaPseudoObject : public SemaBase {
27public:
28 SemaPseudoObject(Sema &S);
29
30 ExprResult checkIncDec(Scope *S, SourceLocation OpLoc,
31 UnaryOperatorKind Opcode, Expr *Op);
32 ExprResult checkAssignment(Scope *S, SourceLocation OpLoc,
33 BinaryOperatorKind Opcode, Expr *LHS, Expr *RHS);
34 ExprResult checkRValue(Expr *E);
35 Expr *recreateSyntacticForm(PseudoObjectExpr *E);
36};
37
38} // namespace clang
39
40#endif // LLVM_CLANG_SEMA_SEMAPSEUDOOBJECT_H
41