Hi, Anna. Some comments:

>     (I am not sure if we should move the setters and getters as well and
>     make them into static methods..)

I can see both sides of this. On the one hand, these methods are not related to 
the workings of ProgramState; they are shared auxiliary data. But on the other, 
CallEvent is definitely part of Core, and getDynamicTypeInfo is /not/ just a 
simple GDM getter -- it will infer a type from the region being passed if no 
type info has been set. So I'm not really going to push one way or the other.


> +/// \class DynamicTypeInfo
> +///

We generally don't include this in our Doxygen comments; "don't repeat 
yourself". (If the name ever changes, someone will forget to change the 
comment.)


> +class DynamicTypeInfo {
> +public:
> +
> +private:


Empty public section?


> +  /// \brief Return true if no dynamic type info is available.
> +  bool isValid() const { return !T.isNull(); }

Returns true if type info IS available, not if it isn't. Also, I'd omit the 
word "dynamic" here; not only is it sort of implicit in the context, but a lot 
of times DynamicTypeInfo objects will be no better than the static type 
information anyway, and one could argue that "no better than static" is the 
same as "no dynamic info is available".


> +  /// \brief Returns false if the type T is the only type in the lattice
> +  /// (the type information is precise), true otherwise.
> +  bool canBeASubClass() const { return CanBeASubClass; }

This is the only time we ever use the word "lattice". Yes, C++ type inheritance 
is a DAG, but that's not a concept we've used in the analyzer until now. TBH, 
the name 'canBeASubclass' tells me more about when the function returns true 
than the comment.


> +  void Profile(llvm::FoldingSetNodeID &ID) const {
> +    T.Profile(ID);
> +    ID.AddInteger((unsigned)CanBeASubClass);
> +  }

I think the correct way to do this is

ID.Add(T);
ID.AddBoolean(CanBeASubClass);


> +}} // end clang::ento namespace

The comment doesn't quite match here; "clang::ento" is still only a single 
namespace. More generally, we haven't really stacked braces until recently. Are 
we going to do this for all nested namespaces moving forwards? If not, I'd 
rather stick with the current convention of two lines.

Jordan
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to