aaron.ballman added inline comments.

================
Comment at: clang-tidy/abseil/DurationFactoryScaleCheck.cpp:36
+GetScaleForFactory(llvm::StringRef FactoryName) {
+  static const auto *ScaleMap =
+      new std::unordered_map<std::string, DurationScale>(
----------------
hokein wrote:
> aaron.ballman wrote:
> > hwright wrote:
> > > Eugene.Zelenko wrote:
> > > > This will cause memory leaks, so may be unique_ptr should be used to 
> > > > hold pointer? May be LLVM ADT has better container?
> > > This is a tradeoff between leaking a small amount of known memory for the 
> > > duration of the program, and constructing this map every time this 
> > > function is invoked.  Since I expect the latter to occur frequently, 
> > > that's a tradeoff I think is acceptable.   (Ideally, this would be a 
> > > compile-time constant, but sadly we don't yet have a `constexpr` 
> > > dictionary type.)
> > > 
> > > Of course, if there is a more typical way of doing that here, I'm happy 
> > > to use it.
> > Why did you not use a static value type?
> I think main reason is lazy initialization.
Static locals are lazily initialized, so I'm still not certain why this 
shouldn't use `static const std::unorderd_map<std::string, DurationScale> 
ScaleMap{...};` instead.


================
Comment at: clang-tidy/abseil/DurationFactoryScaleCheck.cpp:46
+  const auto ScaleIter = ScaleMap->find(FactoryName);
+  if (ScaleIter == ScaleMap->end()) {
+    return llvm::None;
----------------
Elide braces.


================
Comment at: clang-tidy/abseil/DurationFactoryScaleCheck.cpp:57
+                       const FloatingLiteral *FloatLit) {
+  if (IntLit) {
+    return IntLit->getValue().getLimitedValue();
----------------
Elide braces.


================
Comment at: clang-tidy/abseil/DurationFactoryScaleCheck.cpp:60
+  }
+  assert(FloatLit != nullptr);
+  return FloatLit->getValueAsApproximateDouble();
----------------
Please add a message to the assertion. e.g., `assert(foo && "bar");`


================
Comment at: clang-tidy/abseil/DurationFactoryScaleCheck.cpp:179-181
+              functionDecl(hasAnyName("absl::Nanoseconds", 
"absl::Microseconds",
+                                      "absl::Milliseconds", "absl::Seconds",
+                                      "absl::Minutes", "absl::Hours"))
----------------
`::absl` instead -- otherwise this can trigger in unintended places.


https://reviews.llvm.org/D54246



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

Reply via email to