[clang] d1f4753 - [clang] llvm::Optional::value() && => operator*/operator->

Fangrui Song via cfe-commits cfe-commits at lists.llvm.org
Sat Dec 17 11:47:50 PST 2022


Author: Fangrui Song
Date: 2022-12-17T19:47:45Z
New Revision: d1f475347518bdab387f21cda2281c0939a80f70

URL: https://github.com/llvm/llvm-project/commit/d1f475347518bdab387f21cda2281c0939a80f70
DIFF: https://github.com/llvm/llvm-project/commit/d1f475347518bdab387f21cda2281c0939a80f70.diff

LOG: [clang] llvm::Optional::value() && => operator*/operator->

std::optional::value() has undesired exception checking semantics and is
unavailable in older Xcode (see _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS). The
call sites block std::optional migration.

Added: 
    

Modified: 
    clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
    clang/lib/Sema/SemaRISCVVectorLookup.cpp
    clang/unittests/Analysis/MacroExpansionContextTest.cpp
    clang/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
index 444c317cbbefc..7394a7d32eafb 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
@@ -1017,9 +1017,8 @@ class CXXAllocatorCall : public AnyFunctionCall {
   }
 
   SVal getObjectUnderConstruction() const {
-    return ExprEngine::getObjectUnderConstruction(getState(), getOriginExpr(),
-                                                  getLocationContext())
-        .value();
+    return *ExprEngine::getObjectUnderConstruction(getState(), getOriginExpr(),
+                                                   getLocationContext());
   }
 
   /// Number of non-placement arguments to the call. It is equal to 2 for

diff  --git a/clang/lib/Sema/SemaRISCVVectorLookup.cpp b/clang/lib/Sema/SemaRISCVVectorLookup.cpp
index 85bf11e942b96..cf9a8a4f5a228 100644
--- a/clang/lib/Sema/SemaRISCVVectorLookup.cpp
+++ b/clang/lib/Sema/SemaRISCVVectorLookup.cpp
@@ -115,7 +115,7 @@ static QualType RVVType2Qual(ASTContext &Context, const RVVType *Type) {
     llvm_unreachable("Unhandled type.");
   }
   if (Type->isVector())
-    QT = Context.getScalableVectorType(QT, Type->getScale().value());
+    QT = Context.getScalableVectorType(QT, *Type->getScale());
 
   if (Type->isConstant())
     QT = Context.getConstType(QT);

diff  --git a/clang/unittests/Analysis/MacroExpansionContextTest.cpp b/clang/unittests/Analysis/MacroExpansionContextTest.cpp
index add3099a5be9a..5c694c836a488 100644
--- a/clang/unittests/Analysis/MacroExpansionContextTest.cpp
+++ b/clang/unittests/Analysis/MacroExpansionContextTest.cpp
@@ -181,14 +181,14 @@ EMPTY zz
   //  A b cd ef gh
   //      zz
 
-  EXPECT_EQ("", Ctx->getExpandedText(at(3, 10)).value());
-  EXPECT_EQ("EMPTY", Ctx->getOriginalText(at(3, 10)).value());
+  EXPECT_EQ("", *Ctx->getExpandedText(at(3, 10)));
+  EXPECT_EQ("EMPTY", *Ctx->getOriginalText(at(3, 10)));
 
-  EXPECT_EQ("", Ctx->getExpandedText(at(3, 19)).value());
-  EXPECT_EQ("EMPTY", Ctx->getOriginalText(at(3, 19)).value());
+  EXPECT_EQ("", *Ctx->getExpandedText(at(3, 19)));
+  EXPECT_EQ("EMPTY", *Ctx->getOriginalText(at(3, 19)));
 
-  EXPECT_EQ("", Ctx->getExpandedText(at(4, 1)).value());
-  EXPECT_EQ("EMPTY", Ctx->getOriginalText(at(4, 1)).value());
+  EXPECT_EQ("", *Ctx->getExpandedText(at(4, 1)));
+  EXPECT_EQ("EMPTY", *Ctx->getOriginalText(at(4, 1)));
 }
 
 TEST_F(MacroExpansionContextTest, TransitiveExpansions) {
@@ -200,10 +200,10 @@ TEST_F(MacroExpansionContextTest, TransitiveExpansions) {
   // After preprocessing:
   //  A b cd ) 1 ef gh
 
-  EXPECT_EQ("WOOF", Ctx->getOriginalText(at(4, 10)).value());
+  EXPECT_EQ("WOOF", *Ctx->getOriginalText(at(4, 10)));
 
-  EXPECT_EQ("", Ctx->getExpandedText(at(4, 18)).value());
-  EXPECT_EQ("EMPTY", Ctx->getOriginalText(at(4, 18)).value());
+  EXPECT_EQ("", *Ctx->getExpandedText(at(4, 18)));
+  EXPECT_EQ("EMPTY", *Ctx->getOriginalText(at(4, 18)));
 }
 
 TEST_F(MacroExpansionContextTest, MacroFunctions) {
@@ -219,17 +219,17 @@ TEST_F(MacroExpansionContextTest, MacroFunctions) {
   //  WOOF( ) ) ) 1
   //  bar barr( ) ) ) 1( ) ) ) 1),,),')
 
-  EXPECT_EQ("$$ ef ()))1", Ctx->getExpandedText(at(4, 10)).value());
-  EXPECT_EQ("WOOF($$ ef)", Ctx->getOriginalText(at(4, 10)).value());
+  EXPECT_EQ("$$ ef ()))1", *Ctx->getExpandedText(at(4, 10)));
+  EXPECT_EQ("WOOF($$ ef)", *Ctx->getOriginalText(at(4, 10)));
 
-  EXPECT_EQ("", Ctx->getExpandedText(at(4, 22)).value());
-  EXPECT_EQ("EMPTY", Ctx->getOriginalText(at(4, 22)).value());
+  EXPECT_EQ("", *Ctx->getExpandedText(at(4, 22)));
+  EXPECT_EQ("EMPTY", *Ctx->getOriginalText(at(4, 22)));
 
-  EXPECT_EQ("WOOF ()))1", Ctx->getExpandedText(at(5, 3)).value());
-  EXPECT_EQ("WOOF(WOOF)", Ctx->getOriginalText(at(5, 3)).value());
+  EXPECT_EQ("WOOF ()))1", *Ctx->getExpandedText(at(5, 3)));
+  EXPECT_EQ("WOOF(WOOF)", *Ctx->getOriginalText(at(5, 3)));
 
-  EXPECT_EQ("bar barr ()))1()))1", Ctx->getExpandedText(at(6, 3)).value());
-  EXPECT_EQ("WOOF(WOOF(bar barr))", Ctx->getOriginalText(at(6, 3)).value());
+  EXPECT_EQ("bar barr ()))1()))1", *Ctx->getExpandedText(at(6, 3)));
+  EXPECT_EQ("WOOF(WOOF(bar barr))", *Ctx->getOriginalText(at(6, 3)));
 }
 
 TEST_F(MacroExpansionContextTest, VariadicMacros) {
@@ -251,23 +251,20 @@ TEST_F(MacroExpansionContextTest, VariadicMacros) {
   //  fprintf (stderr, "success!\n" );
 
   EXPECT_EQ(R"(fprintf (stderr ,"success!\n",))",
-            Ctx->getExpandedText(at(3, 3)).value());
-  EXPECT_EQ(R"(eprintf("success!\n", ))",
-            Ctx->getOriginalText(at(3, 3)).value());
+            *Ctx->getExpandedText(at(3, 3)));
+  EXPECT_EQ(R"(eprintf("success!\n", ))", *Ctx->getOriginalText(at(3, 3)));
 
   EXPECT_EQ(R"(fprintf (stderr ,"success!\n",))",
-            Ctx->getExpandedText(at(4, 3)).value());
-  EXPECT_EQ(R"(eprintf("success!\n"))", Ctx->getOriginalText(at(4, 3)).value());
+            *Ctx->getExpandedText(at(4, 3)));
+  EXPECT_EQ(R"(eprintf("success!\n"))", *Ctx->getOriginalText(at(4, 3)));
 
   EXPECT_EQ(R"(fprintf (stderr ,"success!\n"))",
-            Ctx->getExpandedText(at(8, 3)).value());
-  EXPECT_EQ(R"(eprintf2("success!\n", ))",
-            Ctx->getOriginalText(at(8, 3)).value());
+            *Ctx->getExpandedText(at(8, 3)));
+  EXPECT_EQ(R"(eprintf2("success!\n", ))", *Ctx->getOriginalText(at(8, 3)));
 
   EXPECT_EQ(R"(fprintf (stderr ,"success!\n"))",
-            Ctx->getExpandedText(at(9, 3)).value());
-  EXPECT_EQ(R"(eprintf2("success!\n"))",
-            Ctx->getOriginalText(at(9, 3)).value());
+            *Ctx->getExpandedText(at(9, 3)));
+  EXPECT_EQ(R"(eprintf2("success!\n"))", *Ctx->getOriginalText(at(9, 3)));
 }
 
 TEST_F(MacroExpansionContextTest, ConcatenationMacros) {
@@ -284,13 +281,11 @@ TEST_F(MacroExpansionContextTest, ConcatenationMacros) {
   //    { "help", help_command },
   //  };
 
-  EXPECT_EQ(R"({"quit",quit_command })",
-            Ctx->getExpandedText(at(4, 5)).value());
-  EXPECT_EQ("COMMAND(quit)", Ctx->getOriginalText(at(4, 5)).value());
+  EXPECT_EQ(R"({"quit",quit_command })", *Ctx->getExpandedText(at(4, 5)));
+  EXPECT_EQ("COMMAND(quit)", *Ctx->getOriginalText(at(4, 5)));
 
-  EXPECT_EQ(R"({"help",help_command })",
-            Ctx->getExpandedText(at(5, 5)).value());
-  EXPECT_EQ("COMMAND(help)", Ctx->getOriginalText(at(5, 5)).value());
+  EXPECT_EQ(R"({"help",help_command })", *Ctx->getExpandedText(at(5, 5)));
+  EXPECT_EQ("COMMAND(help)", *Ctx->getOriginalText(at(5, 5)));
 }
 
 TEST_F(MacroExpansionContextTest, StringizingMacros) {
@@ -315,14 +310,14 @@ TEST_F(MacroExpansionContextTest, StringizingMacros) {
 
   EXPECT_EQ(
       R"(do {if (x ==0)fprintf (stderr ,"Warning: ""x == 0""\n");}while (0))",
-      Ctx->getExpandedText(at(6, 3)).value());
-  EXPECT_EQ("WARN_IF (x == 0)", Ctx->getOriginalText(at(6, 3)).value());
+      *Ctx->getExpandedText(at(6, 3)));
+  EXPECT_EQ("WARN_IF (x == 0)", *Ctx->getOriginalText(at(6, 3)));
 
-  EXPECT_EQ(R"("foo")", Ctx->getExpandedText(at(11, 3)).value());
-  EXPECT_EQ("str (foo)", Ctx->getOriginalText(at(11, 3)).value());
+  EXPECT_EQ(R"("foo")", *Ctx->getExpandedText(at(11, 3)));
+  EXPECT_EQ("str (foo)", *Ctx->getOriginalText(at(11, 3)));
 
-  EXPECT_EQ(R"("4")", Ctx->getExpandedText(at(12, 3)).value());
-  EXPECT_EQ("xstr (foo)", Ctx->getOriginalText(at(12, 3)).value());
+  EXPECT_EQ(R"("4")", *Ctx->getExpandedText(at(12, 3)));
+  EXPECT_EQ("xstr (foo)", *Ctx->getOriginalText(at(12, 3)));
 }
 
 TEST_F(MacroExpansionContextTest, StringizingVariadicMacros) {
@@ -351,18 +346,18 @@ TEST_F(MacroExpansionContextTest, StringizingVariadicMacros) {
 
   EXPECT_EQ("zz !apple !x *apple !x !**y (apple )zz !apple !x *apple !x !**y "
             "(appleapple ))))",
-            Ctx->getExpandedText(at(11, 3)).value());
-  EXPECT_EQ("q(g)", Ctx->getOriginalText(at(11, 3)).value());
+            *Ctx->getExpandedText(at(11, 3)));
+  EXPECT_EQ("q(g)", *Ctx->getOriginalText(at(11, 3)));
 
   EXPECT_EQ(R"res("apple"(apple )"apple"(appleapple )))))res",
-            Ctx->getExpandedText(at(12, 3)).value());
-  EXPECT_EQ("q(xstr)", Ctx->getOriginalText(at(12, 3)).value());
+            *Ctx->getExpandedText(at(12, 3)));
+  EXPECT_EQ("q(xstr)", *Ctx->getOriginalText(at(12, 3)));
 
-  EXPECT_EQ("zz !*)!x )!**y ", Ctx->getExpandedText(at(13, 3)).value());
-  EXPECT_EQ("g(RParen2x)", Ctx->getOriginalText(at(13, 3)).value());
+  EXPECT_EQ("zz !*)!x )!**y ", *Ctx->getExpandedText(at(13, 3)));
+  EXPECT_EQ("g(RParen2x)", *Ctx->getOriginalText(at(13, 3)));
 
-  EXPECT_EQ("!))*))", Ctx->getExpandedText(at(14, 3)).value());
-  EXPECT_EQ("f( RParen2x )", Ctx->getOriginalText(at(14, 3)).value());
+  EXPECT_EQ("!))*))", *Ctx->getExpandedText(at(14, 3)));
+  EXPECT_EQ("f( RParen2x )", *Ctx->getOriginalText(at(14, 3)));
 }
 
 TEST_F(MacroExpansionContextTest, RedefUndef) {
@@ -380,11 +375,11 @@ TEST_F(MacroExpansionContextTest, RedefUndef) {
   //  Hi(Hi)
 
   // FIXME: Extra space follows every identifier.
-  EXPECT_EQ("Welcome Adam ", Ctx->getExpandedText(at(3, 3)).value());
-  EXPECT_EQ("Hi(Adam)", Ctx->getOriginalText(at(3, 3)).value());
+  EXPECT_EQ("Welcome Adam ", *Ctx->getExpandedText(at(3, 3)));
+  EXPECT_EQ("Hi(Adam)", *Ctx->getOriginalText(at(3, 3)));
 
-  EXPECT_EQ("Willkommen ", Ctx->getExpandedText(at(5, 3)).value());
-  EXPECT_EQ("Hi", Ctx->getOriginalText(at(5, 3)).value());
+  EXPECT_EQ("Willkommen ", *Ctx->getExpandedText(at(5, 3)));
+  EXPECT_EQ("Hi", *Ctx->getOriginalText(at(5, 3)));
 
   // There was no macro expansion at 7:3, we should expect None.
   EXPECT_FALSE(Ctx->getExpandedText(at(7, 3)).has_value());
@@ -410,11 +405,11 @@ TEST_F(MacroExpansionContextTest, UnbalacedParenthesis) {
   //  fun();
   //  int x = ((1, fun(), 1, fun(), 1 ));
 
-  EXPECT_EQ("fun ()", Ctx->getExpandedText(at(8, 3)).value());
-  EXPECT_EQ("applyInt )", Ctx->getOriginalText(at(8, 3)).value());
+  EXPECT_EQ("fun ()", *Ctx->getExpandedText(at(8, 3)));
+  EXPECT_EQ("applyInt )", *Ctx->getOriginalText(at(8, 3)));
 
-  EXPECT_EQ("((1,fun (),1,fun (),1", Ctx->getExpandedText(at(13, 12)).value());
-  EXPECT_EQ("f(f(1))", Ctx->getOriginalText(at(13, 12)).value());
+  EXPECT_EQ("((1,fun (),1,fun (),1", *Ctx->getExpandedText(at(13, 12)));
+  EXPECT_EQ("f(f(1))", *Ctx->getOriginalText(at(13, 12)));
 }
 
 } // namespace

diff  --git a/clang/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp b/clang/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp
index 62faf032a3ee7..53361a1184f5d 100644
--- a/clang/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp
+++ b/clang/unittests/DirectoryWatcher/DirectoryWatcherTest.cpp
@@ -262,7 +262,7 @@ void checkEventualResultWithTimeout(VerifyingConsumer &TestConsumer) {
   if (TestConsumer.result()) {
     EXPECT_TRUE(*TestConsumer.result());
   }
-  if ((TestConsumer.result() && !TestConsumer.result().value()) ||
+  if ((TestConsumer.result() && !*TestConsumer.result()) ||
       !TestConsumer.result())
     TestConsumer.printUnmetExpectations(llvm::outs());
 }


        


More information about the cfe-commits mailing list