[llvm] 13fd37c - [FileCheck] llvm::Optional => std::optional
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 14 02:07:55 PST 2022
Author: Fangrui Song
Date: 2022-12-14T10:07:47Z
New Revision: 13fd37c931c26ec07613dcad67b5ab2a593cd416
URL: https://github.com/llvm/llvm-project/commit/13fd37c931c26ec07613dcad67b5ab2a593cd416
DIFF: https://github.com/llvm/llvm-project/commit/13fd37c931c26ec07613dcad67b5ab2a593cd416.diff
LOG: [FileCheck] llvm::Optional => std::optional
Added:
Modified:
llvm/lib/FileCheck/FileCheck.cpp
llvm/lib/FileCheck/FileCheckImpl.h
llvm/unittests/FileCheck/FileCheckTest.cpp
Removed:
################################################################################
diff --git a/llvm/lib/FileCheck/FileCheck.cpp b/llvm/lib/FileCheck/FileCheck.cpp
index e2cc6dc6763bb..d3b061520f03a 100644
--- a/llvm/lib/FileCheck/FileCheck.cpp
+++ b/llvm/lib/FileCheck/FileCheck.cpp
@@ -363,7 +363,7 @@ Expected<ExpressionValue> llvm::min(const ExpressionValue &LeftOperand,
}
Expected<ExpressionValue> NumericVariableUse::eval() const {
- Optional<ExpressionValue> Value = Variable->getValue();
+ std::optional<ExpressionValue> Value = Variable->getValue();
if (Value)
return *Value;
@@ -480,7 +480,7 @@ char ErrorReported::ID = 0;
Expected<NumericVariable *> Pattern::parseNumericVariableDefinition(
StringRef &Expr, FileCheckPatternContext *Context,
- Optional<size_t> LineNumber, ExpressionFormat ImplicitFormat,
+ std::optional<size_t> LineNumber, ExpressionFormat ImplicitFormat,
const SourceMgr &SM) {
Expected<VariableProperties> ParseVarResult = parseVariable(Expr, SM);
if (!ParseVarResult)
@@ -518,7 +518,7 @@ Expected<NumericVariable *> Pattern::parseNumericVariableDefinition(
}
Expected<std::unique_ptr<NumericVariableUse>> Pattern::parseNumericVariableUse(
- StringRef Name, bool IsPseudo, Optional<size_t> LineNumber,
+ StringRef Name, bool IsPseudo, std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM) {
if (IsPseudo && !Name.equals("@LINE"))
return ErrorDiagnostic::get(
@@ -542,7 +542,7 @@ Expected<std::unique_ptr<NumericVariableUse>> Pattern::parseNumericVariableUse(
Context->GlobalNumericVariableTable[Name] = NumericVariable;
}
- Optional<size_t> DefLineNumber = NumericVariable->getDefLineNumber();
+ std::optional<size_t> DefLineNumber = NumericVariable->getDefLineNumber();
if (DefLineNumber && LineNumber && *DefLineNumber == *LineNumber)
return ErrorDiagnostic::get(
SM, Name,
@@ -554,7 +554,7 @@ Expected<std::unique_ptr<NumericVariableUse>> Pattern::parseNumericVariableUse(
Expected<std::unique_ptr<ExpressionAST>> Pattern::parseNumericOperand(
StringRef &Expr, AllowedOperand AO, bool MaybeInvalidConstraint,
- Optional<size_t> LineNumber, FileCheckPatternContext *Context,
+ std::optional<size_t> LineNumber, FileCheckPatternContext *Context,
const SourceMgr &SM) {
if (Expr.startswith("(")) {
if (AO != AllowedOperand::Any)
@@ -611,7 +611,7 @@ Expected<std::unique_ptr<ExpressionAST>> Pattern::parseNumericOperand(
}
Expected<std::unique_ptr<ExpressionAST>>
-Pattern::parseParenExpr(StringRef &Expr, Optional<size_t> LineNumber,
+Pattern::parseParenExpr(StringRef &Expr, std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM) {
Expr = Expr.ltrim(SpaceChars);
assert(Expr.startswith("("));
@@ -646,7 +646,7 @@ Pattern::parseParenExpr(StringRef &Expr, Optional<size_t> LineNumber,
Expected<std::unique_ptr<ExpressionAST>>
Pattern::parseBinop(StringRef Expr, StringRef &RemainingExpr,
std::unique_ptr<ExpressionAST> LeftOp,
- bool IsLegacyLineExpr, Optional<size_t> LineNumber,
+ bool IsLegacyLineExpr, std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM) {
RemainingExpr = RemainingExpr.ltrim(SpaceChars);
if (RemainingExpr.empty())
@@ -690,12 +690,12 @@ Pattern::parseBinop(StringRef Expr, StringRef &RemainingExpr,
Expected<std::unique_ptr<ExpressionAST>>
Pattern::parseCallExpr(StringRef &Expr, StringRef FuncName,
- Optional<size_t> LineNumber,
+ std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM) {
Expr = Expr.ltrim(SpaceChars);
assert(Expr.startswith("("));
- auto OptFunc = StringSwitch<Optional<binop_eval_t>>(FuncName)
+ auto OptFunc = StringSwitch<std::optional<binop_eval_t>>(FuncName)
.Case("add", operator+)
.Case("div", operator/)
.Case("max", max)
@@ -765,8 +765,8 @@ Pattern::parseCallExpr(StringRef &Expr, StringRef FuncName,
}
Expected<std::unique_ptr<Expression>> Pattern::parseNumericSubstitutionBlock(
- StringRef Expr, Optional<NumericVariable *> &DefinedNumericVariable,
- bool IsLegacyLineExpr, Optional<size_t> LineNumber,
+ StringRef Expr, std::optional<NumericVariable *> &DefinedNumericVariable,
+ bool IsLegacyLineExpr, std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM) {
std::unique_ptr<ExpressionAST> ExpressionASTPointer = nullptr;
StringRef DefExpr = StringRef();
@@ -1099,7 +1099,7 @@ bool Pattern::parsePattern(StringRef PatternStr, StringRef Prefix,
// Parse numeric substitution block.
std::unique_ptr<Expression> ExpressionPointer;
- Optional<NumericVariable *> DefinedNumericVariable;
+ std::optional<NumericVariable *> DefinedNumericVariable;
if (IsNumBlock) {
Expected<std::unique_ptr<Expression>> ParseResult =
parseNumericSubstitutionBlock(MatchStr, DefinedNumericVariable,
@@ -1412,7 +1412,7 @@ void Pattern::printVariableDefs(const SourceMgr &SM,
for (const auto &VariableDef : NumericVariableDefs) {
VarCapture VC;
VC.Name = VariableDef.getKey();
- Optional<StringRef> StrValue =
+ std::optional<StringRef> StrValue =
VariableDef.getValue().DefinedNumericVariable->getStringValue();
if (!StrValue)
continue;
@@ -2701,7 +2701,7 @@ Error FileCheckPatternContext::defineCmdlineVariables(
// Now parse the definition both to check that the syntax is correct and
// to create the necessary class instance.
StringRef CmdlineDefExpr = CmdlineDef.substr(1);
- Optional<NumericVariable *> DefinedNumericVariable;
+ std::optional<NumericVariable *> DefinedNumericVariable;
Expected<std::unique_ptr<Expression>> ExpressionResult =
Pattern::parseNumericSubstitutionBlock(CmdlineDefExpr,
DefinedNumericVariable, false,
diff --git a/llvm/lib/FileCheck/FileCheckImpl.h b/llvm/lib/FileCheck/FileCheckImpl.h
index 556be6b8bb0f9..fd3568e7a5b06 100644
--- a/llvm/lib/FileCheck/FileCheckImpl.h
+++ b/llvm/lib/FileCheck/FileCheckImpl.h
@@ -15,13 +15,13 @@
#ifndef LLVM_LIB_FILECHECK_FILECHECKIMPL_H
#define LLVM_LIB_FILECHECK_FILECHECKIMPL_H
-#include "llvm/ADT/Optional.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/FileCheck/FileCheck.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/SourceMgr.h"
#include <map>
+#include <optional>
#include <string>
#include <vector>
@@ -266,23 +266,23 @@ class NumericVariable {
ExpressionFormat ImplicitFormat;
/// Value of numeric variable, if defined, or std::nullopt otherwise.
- Optional<ExpressionValue> Value;
+ std::optional<ExpressionValue> Value;
/// The input buffer's string from which Value was parsed, or std::nullopt.
/// See comments on getStringValue for a discussion of the None case.
- Optional<StringRef> StrValue;
+ std::optional<StringRef> StrValue;
/// Line number where this variable is defined, or std::nullopt if defined
/// before input is parsed. Used to determine whether a variable is defined on
/// the same line as a given use.
- Optional<size_t> DefLineNumber;
+ std::optional<size_t> DefLineNumber;
public:
/// Constructor for a variable \p Name with implicit format \p ImplicitFormat
/// defined at line \p DefLineNumber or defined before input is parsed if
/// \p DefLineNumber is None.
explicit NumericVariable(StringRef Name, ExpressionFormat ImplicitFormat,
- Optional<size_t> DefLineNumber = std::nullopt)
+ std::optional<size_t> DefLineNumber = std::nullopt)
: Name(Name), ImplicitFormat(ImplicitFormat),
DefLineNumber(DefLineNumber) {}
@@ -293,20 +293,20 @@ class NumericVariable {
ExpressionFormat getImplicitFormat() const { return ImplicitFormat; }
/// \returns this variable's value.
- Optional<ExpressionValue> getValue() const { return Value; }
+ std::optional<ExpressionValue> getValue() const { return Value; }
/// \returns the input buffer's string from which this variable's value was
/// parsed, or std::nullopt if the value is not yet defined or was not parsed
/// from the input buffer. For example, the value of @LINE is not parsed from
/// the input buffer, and some numeric variables are parsed from the command
/// line instead.
- Optional<StringRef> getStringValue() const { return StrValue; }
+ std::optional<StringRef> getStringValue() const { return StrValue; }
/// Sets value of this numeric variable to \p NewValue, and sets the input
/// buffer string from which it was parsed to \p NewStrValue. See comments on
/// getStringValue for a discussion of when the latter can be None.
void setValue(ExpressionValue NewValue,
- Optional<StringRef> NewStrValue = std::nullopt) {
+ std::optional<StringRef> NewStrValue = std::nullopt) {
Value = NewValue;
StrValue = NewStrValue;
}
@@ -320,7 +320,7 @@ class NumericVariable {
/// \returns the line number where this variable is defined, if any, or
/// std::nullopt if defined before input is parsed.
- Optional<size_t> getDefLineNumber() const { return DefLineNumber; }
+ std::optional<size_t> getDefLineNumber() const { return DefLineNumber; }
};
/// Class representing the use of a numeric variable in the AST of an
@@ -675,14 +675,14 @@ class Pattern {
/// Line number for this CHECK pattern or std::nullopt if it is an implicit
/// pattern. Used to determine whether a variable definition is made on an
/// earlier line to the one with this CHECK.
- Optional<size_t> LineNumber;
+ std::optional<size_t> LineNumber;
/// Ignore case while matching if set to true.
bool IgnoreCase = false;
public:
Pattern(Check::FileCheckType Ty, FileCheckPatternContext *Context,
- Optional<size_t> Line = std::nullopt)
+ std::optional<size_t> Line = std::nullopt)
: Context(Context), CheckTy(Ty), LineNumber(Line) {}
/// \returns the location in source code.
@@ -719,8 +719,8 @@ class Pattern {
/// representing the numeric variable defined in this numeric substitution
/// block, or std::nullopt if this block does not define any variable.
static Expected<std::unique_ptr<Expression>> parseNumericSubstitutionBlock(
- StringRef Expr, Optional<NumericVariable *> &DefinedNumericVariable,
- bool IsLegacyLineExpr, Optional<size_t> LineNumber,
+ StringRef Expr, std::optional<NumericVariable *> &DefinedNumericVariable,
+ bool IsLegacyLineExpr, std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM);
/// Parses the pattern in \p PatternStr and initializes this Pattern instance
/// accordingly.
@@ -736,7 +736,7 @@ class Pattern {
size_t Len;
};
struct MatchResult {
- Optional<Match> TheMatch;
+ std::optional<Match> TheMatch;
Error TheError;
MatchResult(size_t MatchPos, size_t MatchLen, Error E)
: TheMatch(Match{MatchPos, MatchLen}), TheError(std::move(E)) {}
@@ -794,7 +794,7 @@ class Pattern {
/// should defining such a variable be invalid.
static Expected<NumericVariable *> parseNumericVariableDefinition(
StringRef &Expr, FileCheckPatternContext *Context,
- Optional<size_t> LineNumber, ExpressionFormat ImplicitFormat,
+ std::optional<size_t> LineNumber, ExpressionFormat ImplicitFormat,
const SourceMgr &SM);
/// Parses \p Name as a (pseudo if \p IsPseudo is true) numeric variable use
/// at line \p LineNumber, or before input is parsed if \p LineNumber is
@@ -803,7 +803,7 @@ class Pattern {
/// representing that variable if successful, or an error holding a
/// diagnostic against \p SM otherwise.
static Expected<std::unique_ptr<NumericVariableUse>> parseNumericVariableUse(
- StringRef Name, bool IsPseudo, Optional<size_t> LineNumber,
+ StringRef Name, bool IsPseudo, std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM);
enum class AllowedOperand { LineVar, LegacyLiteral, Any };
/// Parses \p Expr for use of a numeric operand at line \p LineNumber, or
@@ -817,7 +817,7 @@ class Pattern {
/// function will attempt to parse a parenthesized expression.
static Expected<std::unique_ptr<ExpressionAST>>
parseNumericOperand(StringRef &Expr, AllowedOperand AO, bool ConstraintParsed,
- Optional<size_t> LineNumber,
+ std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM);
/// Parses and updates \p RemainingExpr for a binary operation at line
/// \p LineNumber, or before input is parsed if \p LineNumber is None. The
@@ -831,7 +831,7 @@ class Pattern {
static Expected<std::unique_ptr<ExpressionAST>>
parseBinop(StringRef Expr, StringRef &RemainingExpr,
std::unique_ptr<ExpressionAST> LeftOp, bool IsLegacyLineExpr,
- Optional<size_t> LineNumber, FileCheckPatternContext *Context,
+ std::optional<size_t> LineNumber, FileCheckPatternContext *Context,
const SourceMgr &SM);
/// Parses a parenthesized expression inside \p Expr at line \p LineNumber, or
@@ -841,7 +841,7 @@ class Pattern {
/// variables. \returns the class representing that operand in the AST of the
/// expression or an error holding a diagnostic against \p SM otherwise.
static Expected<std::unique_ptr<ExpressionAST>>
- parseParenExpr(StringRef &Expr, Optional<size_t> LineNumber,
+ parseParenExpr(StringRef &Expr, std::optional<size_t> LineNumber,
FileCheckPatternContext *Context, const SourceMgr &SM);
/// Parses \p Expr for an argument list belonging to a call to function \p
@@ -853,8 +853,8 @@ class Pattern {
/// otherwise.
static Expected<std::unique_ptr<ExpressionAST>>
parseCallExpr(StringRef &Expr, StringRef FuncName,
- Optional<size_t> LineNumber, FileCheckPatternContext *Context,
- const SourceMgr &SM);
+ std::optional<size_t> LineNumber,
+ FileCheckPatternContext *Context, const SourceMgr &SM);
};
//===----------------------------------------------------------------------===//
diff --git a/llvm/unittests/FileCheck/FileCheckTest.cpp b/llvm/unittests/FileCheck/FileCheckTest.cpp
index c31c553470dd1..8f7512844e8d7 100644
--- a/llvm/unittests/FileCheck/FileCheckTest.cpp
+++ b/llvm/unittests/FileCheck/FileCheckTest.cpp
@@ -750,7 +750,7 @@ TEST_F(FileCheckTest, NumericVariable) {
// Defined variable without string: only getValue and eval return value set.
FooVar.setValue(ExpressionValue(42u));
- Optional<ExpressionValue> Value = FooVar.getValue();
+ std::optional<ExpressionValue> Value = FooVar.getValue();
ASSERT_TRUE(Value);
EXPECT_EQ(42, cantFail(Value->getSignedValue()));
EXPECT_FALSE(FooVar.getStringValue());
@@ -1014,7 +1014,7 @@ class PatternTester {
Expected<std::unique_ptr<Expression>>
parseSubst(StringRef Expr, bool IsLegacyLineExpr = false) {
StringRef ExprBufferRef = bufferize(SM, Expr);
- Optional<NumericVariable *> DefinedNumericVariable;
+ std::optional<NumericVariable *> DefinedNumericVariable;
return P.parseNumericSubstitutionBlock(
ExprBufferRef, DefinedNumericVariable, IsLegacyLineExpr, LineNumber,
&Context, SM);
@@ -1665,7 +1665,7 @@ TEST_F(FileCheckTest, FileCheckContext) {
StringRef UnknownVarStr = "UnknownVar";
Expected<StringRef> LocalVar = Cxt.getPatternVarValue(LocalVarStr);
P = Pattern(Check::CheckPlain, &Cxt, ++LineNumber);
- Optional<NumericVariable *> DefinedNumericVariable;
+ std::optional<NumericVariable *> DefinedNumericVariable;
Expected<std::unique_ptr<Expression>> ExpressionPointer =
P.parseNumericSubstitutionBlock(LocalNumVar1Ref, DefinedNumericVariable,
/*IsLegacyLineExpr=*/false, LineNumber,
More information about the llvm-commits
mailing list