Author: Richard Smith Date: 2020-04-14T23:15:27-07:00 New Revision: 5d3f7176c1b299d456cec7da4923be5f39e61228
URL: https://github.com/llvm/llvm-project/commit/5d3f7176c1b299d456cec7da4923be5f39e61228 DIFF: https://github.com/llvm/llvm-project/commit/5d3f7176c1b299d456cec7da4923be5f39e61228.diff LOG: Remove setters from CXXTypeidExpr and CXXUuidofExpr. We generally prefer to have the ASTReader directly set fields rather than including public setter functions. Added: Modified: clang/include/clang/AST/ExprCXX.h clang/lib/Serialization/ASTReaderStmt.cpp Removed: ################################################################################ diff --git a/clang/include/clang/AST/ExprCXX.h b/clang/include/clang/AST/ExprCXX.h index e3404fec02dd..8b8c3187e446 100644 --- a/clang/include/clang/AST/ExprCXX.h +++ b/clang/include/clang/AST/ExprCXX.h @@ -778,6 +778,8 @@ class CXXStdInitializerListExpr : public Expr { /// /// This represents code like \c typeid(int) or \c typeid(*objPtr) class CXXTypeidExpr : public Expr { + friend class ASTStmtReader; + private: llvm::PointerUnion<Stmt *, TypeSourceInfo *> Operand; SourceRange Range; @@ -818,22 +820,11 @@ class CXXTypeidExpr : public Expr { assert(isTypeOperand() && "Cannot call getTypeOperand for typeid(expr)"); return Operand.get<TypeSourceInfo *>(); } - - void setTypeOperandSourceInfo(TypeSourceInfo *TSI) { - assert(isTypeOperand() && "Cannot call getTypeOperand for typeid(expr)"); - Operand = TSI; - } - Expr *getExprOperand() const { assert(!isTypeOperand() && "Cannot call getExprOperand for typeid(type)"); return static_cast<Expr*>(Operand.get<Stmt *>()); } - void setExprOperand(Expr *E) { - assert(!isTypeOperand() && "Cannot call getExprOperand for typeid(type)"); - Operand = E; - } - SourceLocation getBeginLoc() const LLVM_READONLY { return Range.getBegin(); } SourceLocation getEndLoc() const LLVM_READONLY { return Range.getEnd(); } SourceRange getSourceRange() const LLVM_READONLY { return Range; } @@ -1000,6 +991,8 @@ class MSPropertySubscriptExpr : public Expr { /// /// This represents code like @c __uuidof(COMTYPE) or @c __uuidof(*comPtr) class CXXUuidofExpr : public Expr { + friend class ASTStmtReader; + private: llvm::PointerUnion<Stmt *, TypeSourceInfo *> Operand; StringRef UuidStr; @@ -1038,22 +1031,11 @@ class CXXUuidofExpr : public Expr { assert(isTypeOperand() && "Cannot call getTypeOperand for __uuidof(expr)"); return Operand.get<TypeSourceInfo *>(); } - - void setTypeOperandSourceInfo(TypeSourceInfo *TSI) { - assert(isTypeOperand() && "Cannot call getTypeOperand for __uuidof(expr)"); - Operand = TSI; - } - Expr *getExprOperand() const { assert(!isTypeOperand() && "Cannot call getExprOperand for __uuidof(type)"); return static_cast<Expr*>(Operand.get<Stmt *>()); } - void setExprOperand(Expr *E) { - assert(!isTypeOperand() && "Cannot call getExprOperand for __uuidof(type)"); - Operand = E; - } - void setUuidStr(StringRef US) { UuidStr = US; } StringRef getUuidStr() const { return UuidStr; } diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index f2338a1228df..e90bafc9c01e 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -1748,14 +1748,10 @@ void ASTStmtReader::VisitCXXNullPtrLiteralExpr(CXXNullPtrLiteralExpr *E) { void ASTStmtReader::VisitCXXTypeidExpr(CXXTypeidExpr *E) { VisitExpr(E); E->setSourceRange(readSourceRange()); - if (E->isTypeOperand()) { // typeid(int) - E->setTypeOperandSourceInfo( - readTypeSourceInfo()); - return; - } - - // typeid(42+2) - E->setExprOperand(Record.readSubExpr()); + if (E->isTypeOperand()) + E->Operand = readTypeSourceInfo(); + else + E->Operand = Record.readSubExpr(); } void ASTStmtReader::VisitCXXThisExpr(CXXThisExpr *E) { @@ -2162,14 +2158,10 @@ void ASTStmtReader::VisitCXXUuidofExpr(CXXUuidofExpr *E) { E->setSourceRange(readSourceRange()); std::string UuidStr = readString(); E->setUuidStr(StringRef(UuidStr).copy(Record.getContext())); - if (E->isTypeOperand()) { // __uuidof(ComType) - E->setTypeOperandSourceInfo( - readTypeSourceInfo()); - return; - } - - // __uuidof(expr) - E->setExprOperand(Record.readSubExpr()); + if (E->isTypeOperand()) + E->Operand = readTypeSourceInfo(); + else + E->Operand = Record.readSubExpr(); } void ASTStmtReader::VisitSEHLeaveStmt(SEHLeaveStmt *S) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits