rsmith added a comment.

Thanks, this is looking good.



================
Comment at: include/clang/AST/Expr.h:874-875
+
+/// FullExpression - Represents a "full-expression" node.
+class FullExpression : public Expr {
+protected:
----------------
All of our expression classes have names ending `Expr`; I don't think we should 
deviate from that convention here.


================
Comment at: include/clang/AST/Expr.h:886-889
+  virtual const Expr *getSubExpr() const = 0;
+  virtual Expr *getSubExpr() = 0;
+
+  virtual unsigned getNumObjects() const { return 0; }
----------------
These should not be `virtual`; this class hierarchy uses LLVM-style RTTI rather 
than vtables. If you want to provide these convenience methods on `FullExpr`, 
you can manually dispatch on the dynamic type using `dyn_cast` or similar.


================
Comment at: include/clang/AST/Expr.h:924-925
+  // Iterators
+  child_range children() { return Val->children(); }
+  const_child_range children() const { return Val->children(); }
+};
----------------
The children range for a `ConstantExpr` should comprise `Val` itself, not 
`Val`'s children.


================
Comment at: include/clang/Basic/StmtNodes.td:97
+// Wrapper expressions
+def ConstantExpr : DStmt<Expr>;
+
----------------
Please add a `def FullExpr : DStmt<Expr, 1>` and change this and 
`ExprWithCleanups` to be `: DStmt<FullExpr>` so that our visitors will be able 
to visit the `FullExpr` base class.


================
Comment at: lib/AST/Expr.cpp:3100-3101
+  case ConstantExprClass:
+    return cast<ConstantExpr>(this)->getSubExpr()->HasSideEffects(
+        Ctx, IncludePossibleEffects);
+
----------------
Please add a FIXME here to move this into the `return false;` block. (Keeping 
this functionally identical to an `ExprWithCleanups` with no cleanups for now 
seems fine.)


Repository:
  rC Clang

https://reviews.llvm.org/D53475



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to