aaron.ballman added inline comments.
================ Comment at: clang/lib/AST/Interp/ByteCodeExprGen.h:258 + /// or nullptr if no such decl exists. + const CXXRecordDecl * getRecordDecl(const Expr *E) const { + QualType T = E->getType(); ---------------- ================ Comment at: clang/test/AST/Interp/records.cpp:209 + static_assert(d.getA() == 20); + static_assert(d.getB() == 30); +}; ---------------- I'd appreciate some more failure test cases, if they're not already covered elsewhere: ``` struct Base { int Val; }; struct Derived : Base { int OtherVal; constexpr Derived(int i) : OtherVal(i) {} }; // Something here should be diagnosed; either because the Derived ctor is not a // valid constexpr function or because we're accessing an uninitialized member. constexpr Derived D(12); static_assert(D.Val == 0); // Another test is when a constexpr ctor calls a non-constexpr base class ctor. struct AnotherBase { int Val; constexpr AnotherBase(int i) : Val(12 / i) {} }; struct AnotherDerived : AnotherBase { constexpr AnotherDerived(int i) : AnotherBase(i) {} }; constexpr AnotherDerived Derp(0); // Skipping the derived class constructor is also // interesting to consider: struct YetAnotherBase { int Val; constexpr YetAnotherBase(int i) : Val(i) {} }; struct YetAnotherDerived : YetAnotherBase { using YetAnotherBase::YetAnotherBase; int OtherVal; constexpr bool doit() const { return Val == OtherVal; } }; constexpr YetAnotherDerived Oops(0); ``` CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135025/new/ https://reviews.llvm.org/D135025 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits