kromanenkov added a comment.

A few comments.


================
Comment at: lib/StaticAnalyzer/Checkers/LabelInsideSwitchChecker.cpp:19
+    if (S.second)
+      return S;
+
----------------
Maybe I miss something, but do not we return StringRef to temporary string 
going out of scope here? Same below.


================
Comment at: lib/StaticAnalyzer/Checkers/LabelInsideSwitchChecker.cpp:24
+
+  class WalkAST : public ConstStmtVisitor<WalkAST, void, bool> {
+    const CheckerBase *Checker;
----------------
Do you consider using ASTMatchers like in NumberObjectConversionChecker instead 
of manually traversing the AST?


================
Comment at: lib/StaticAnalyzer/Checkers/LabelInsideSwitchChecker.cpp:59
+        BR.EmitBasicReport(AC->getDecl(), Checker, "Labeled statement inside 
switch",
+                           categories::LogicError, OS.str(), Loc, Sr);
+      }
----------------
a.sidorin wrote:
> raw_svector_ostream is always synchronized with the string it prints to so we 
> can just pass the message string instead of calling .str().
You could use S->getSourceRange() instead of Sr, as llvm::ArrayRef in 
EmitBasicReport() could be constructed even from the 0 consecutively elements.


================
Comment at: lib/StaticAnalyzer/Checkers/LabelInsideSwitchChecker.cpp:80
+      MinSize = ExpSize;
+    }
+
----------------
Maybe so?
size_t MinSize = std::min(StrSize, ExpSize);
size_t SizeDelta = std::labs(StrSize, ExpSize);


Repository:
  rC Clang

https://reviews.llvm.org/D40715



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

Reply via email to