junaire added inline comments.

================
Comment at: clang/include/clang/Interpreter/Interpreter.h:96
+
+  size_t getEffectivePTUSize() const;
+
----------------
aaron.ballman wrote:
> It looks like this can be private?
> 
> Also, just a note (not something you have to deal with in this review), the 
> local naming convention seems to have decided that if the function starts 
> with `get` then it's camel case and otherwise the name is pascal case.
Fixed.


================
Comment at: clang/include/clang/Interpreter/Value.h:83
+  Value() = default;
+  Value(void /*Interpreter*/ *In, void /*QualType*/ *Ty);
+  Value(const Value &RHS);
----------------
aaron.ballman wrote:
> v.g.vassilev wrote:
> > junaire wrote:
> > > aaron.ballman wrote:
> > > > Why do these take `void *` instead of the expected type?
> > > Yeah for the first parameter, we could just use `Interpreter*` but the 
> > > second one is an opaque type so I think we should keep it?
> > See my previous comments on performance. We cannot include anything bulky 
> > in the header file.
> I think I understand why the design is the way it is, but it still makes me 
> uneasy. The constructor takes a pointer to some bucket of bytes... no size 
> information, no type information, etc. Just "here's a random pointer". And 
> then later, we hope the user calls `setKind()` in a way that makes sense.
> 
> We need it to be fast, but we also need it to be correct -- the type system 
> is the best tool for helping with that.
Not really... The user doesn't need to call `setKind()` explicitly to construct 
a `Value`, the constructor will handle it automatically. See 
`ConvertQualTypeToKind` in `Value.cpp`. So if the pointer is just some garbage 
data, the constructor should fail before yielding out a valid instance.


================
Comment at: clang/lib/Interpreter/IncrementalParser.cpp:22
 #include "clang/FrontendTool/Utils.h"
+#include "clang/Interpreter/Interpreter.h"
 #include "clang/Parse/Parser.h"
----------------
aaron.ballman wrote:
> v.g.vassilev wrote:
> > This introduces a layering violation. Can we avoid it?
> Does it? This file is in `clang/lib/Interpreter` so including other things 
> from `clang/Interpreter` would not be a layering violation normally.
That's an old comment, already fixed and marked it as done :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D141215/new/

https://reviews.llvm.org/D141215

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

Reply via email to