NoQ added a comment.

Yeah, i think this is now as easy as i expected it to be :)

Still, the new API is in need of better documentation, because the notion of 
default binding is already confusing, and the new use-case we now have for this 
API is even more confusing. I don't instantly see a good way to justify this 
hack, but some day we'd need to either do that or refactor further. The notion 
of default binding needs to become more "material".

A more expanded doxygen comment should probably be a great start.



================
Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/Store.h:66
+  /// \return The default value bound to the LazyCompoundVal \c lcv.
+  virtual SVal getDefaultBinding(Store store, nonloc::LazyCompoundVal lcv) = 0;
+
----------------
I think there are two different use cases here:
1. `getDefaultBinding(Store, Region)` would retrieve default binding in a given 
store for the region's base region,
2. `getDefaultBinding(LazyCompoundVal)` would retrieve default binding for the 
lazy compound value's base region from the lazy compound value's store - a 
shorthand for `getDefaultBinding(lcv.getStore(), lcv.getRegion())`.

Otherwise we're passing two different stores into the function (one directly, 
another as part of the lazy compound value), and it's confusing which one is 
actually used.




================
Comment at: lib/StaticAnalyzer/Core/RegionStore.cpp:498
+  SVal getDefaultBinding(Store S, nonloc::LazyCompoundVal L) override {
+    if (!L.getRegion())
+      return UnknownVal();
----------------
`LazyCompoundVal` always has a region.


================
Comment at: lib/StaticAnalyzer/Core/RegionStore.cpp:505
+
+    return UnknownVal();
+  }
----------------
Because UnknownVal is an interesting default binding, quite different from lack 
of default binding, i'd rather return `Optional<SVal>` from that function (and 
None here).


https://reviews.llvm.org/D28445



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

Reply via email to