Lines Matching defs:MaybeExpr

35 using MaybeExpr =
168 MaybeExpr TryDefinedOp(
171 MaybeExpr TryDefinedOp(E opr, parser::MessageFixedText msg) {
182 MaybeExpr TryDefinedOp(
184 MaybeExpr TryBoundOp(const Symbol &, int passIndex);
187 MaybeExpr AnalyzeExprOrWholeAssumedSizeArray(const parser::Expr &);
211 MaybeExpr ExpressionAnalyzer::Designate(DataRef &&ref) {
249 } else if (MaybeExpr result{AsGenericExpr(std::move(ref))}) {
268 MaybeExpr ExpressionAnalyzer::CompleteSubscripts(ArrayRef &&ref) {
307 MaybeExpr ExpressionAnalyzer::ApplySubscripts(
321 [&](auto &&) -> MaybeExpr {
566 MaybeExpr ExpressionAnalyzer::FixMisparsedSubstring(
579 if (MaybeExpr substringExpr{Analyze(d)}) {
592 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Designator &d) {
599 MaybeExpr result{Analyze(d.u)};
617 // of type specificity as fully general MaybeExpr values.
618 template <typename A> common::IfNoLvalue<MaybeExpr, A> AsMaybeExpr(A &&x) {
621 template <typename A> MaybeExpr AsMaybeExpr(std::optional<A> &&x) {
639 if (MaybeExpr ie{Analyze(n)}) {
657 using Result = MaybeExpr;
712 MaybeExpr ExpressionAnalyzer::IntLiteralConstant(
720 if (MaybeExpr result{common::SearchTypes(IntTypeVisitor<TYPES, CAT>{
735 MaybeExpr ExpressionAnalyzer::Analyze(
742 MaybeExpr ExpressionAnalyzer::Analyze(
748 MaybeExpr ExpressionAnalyzer::Analyze(
795 MaybeExpr ExpressionAnalyzer::Analyze(const parser::RealLiteralConstant &x) {
851 MaybeExpr ExpressionAnalyzer::Analyze(
865 MaybeExpr ExpressionAnalyzer::Analyze(
877 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ComplexPart &x) {
881 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ComplexLiteralConstant &z) {
887 MaybeExpr ExpressionAnalyzer::AnalyzeString(std::string &&string, int kind) {
909 MaybeExpr ExpressionAnalyzer::Analyze(const parser::CharLiteralConstant &x) {
916 MaybeExpr ExpressionAnalyzer::Analyze(
927 MaybeExpr ExpressionAnalyzer::Analyze(const parser::LogicalLiteralConstant &x) {
941 MaybeExpr ExpressionAnalyzer::Analyze(const parser::BOZLiteralConstant &x) {
974 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Name &n) {
1033 MaybeExpr ExpressionAnalyzer::Analyze(const parser::NamedConstant &n) {
1035 if (MaybeExpr value{Analyze(n.v)}) {
1045 MaybeExpr ExpressionAnalyzer::Analyze(const parser::NullInit &n) {
1047 if (MaybeExpr value{Analyze(n.v.value())}) {
1058 MaybeExpr ExpressionAnalyzer::Analyze(
1064 MaybeExpr ExpressionAnalyzer::Analyze(const parser::InitialDataTarget &x) {
1068 MaybeExpr ExpressionAnalyzer::Analyze(const parser::DataStmtValue &x) {
1072 if (MaybeExpr expr{Analyze(repeat->u)}) {
1092 if (MaybeExpr expr{Analyze(*bound)}) {
1111 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Substring &ss) {
1112 if (MaybeExpr baseExpr{Analyze(std::get<parser::DataRef>(ss.t))}) {
1114 if (MaybeExpr newBaseExpr{Designate(std::move(*dataRef))}) {
1164 MaybeExpr ExpressionAnalyzer::Analyze(
1171 if (MaybeExpr string{Analyze(std::get<parser::CharLiteralConstant>(x.t))}) {
1184 [&](auto &&ckExpr) -> MaybeExpr {
1205 MaybeExpr ExpressionAnalyzer::Analyze(const parser::SubstringInquiry &x) {
1206 if (MaybeExpr substring{Analyze(x.v)}) {
1221 MaybeExpr &&expr) {
1293 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ArrayElement &ae) {
1294 MaybeExpr baseExpr;
1378 MaybeExpr ExpressionAnalyzer::Analyze(const parser::StructureComponent &sc) {
1388 MaybeExpr base;
1469 MaybeExpr ExpressionAnalyzer::Analyze(const parser::CoindexedNamedObject &x) {
1498 MaybeExpr coex{Analyze(cosub)};
1578 MaybeExpr ToExpr();
1583 using Result = MaybeExpr;
1635 void Push(MaybeExpr &&);
1645 MaybeExpr &&y) {
1672 void ArrayConstructorContext::Push(MaybeExpr &&x) {
1813 MaybeExpr lowerExpr{exprAnalyzer_.Analyze(std::get<0>(triplet.t))};
1814 MaybeExpr upperExpr{exprAnalyzer_.Analyze(std::get<1>(triplet.t))};
1815 MaybeExpr strideExpr{exprAnalyzer_.Analyze(std::get<2>(triplet.t))};
1965 MaybeExpr ArrayConstructorContext::ToExpr() {
1969 MaybeExpr ExpressionAnalyzer::Analyze(const parser::ArrayConstructor &array) {
1981 static MaybeExpr ImplicitConvertTo(const semantics::Symbol &sym,
1989 return MaybeExpr{std::move(expr)};
1996 MaybeExpr ExpressionAnalyzer::Analyze(
2066 MaybeExpr value{Analyze(expr)};
2218 if (MaybeExpr converted{ImplicitConvertTo(
2396 if (MaybeExpr base{Analyze(sc.base)}) {
3161 MaybeExpr ExpressionAnalyzer::Analyze(const parser::FunctionReference &funcRef,
3315 MaybeExpr lhs{Analyze(std::get<parser::DataRef>(x.t))};
3316 MaybeExpr rhs;
3460 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Parentheses &x) {
3461 if (MaybeExpr operand{Analyze(x.v.value())}) {
3475 static MaybeExpr NumericUnaryHelper(ExpressionAnalyzer &context,
3496 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::UnaryPlus &x) {
3500 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Negate &x) {
3511 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::NOT &x) {
3528 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::PercentLoc &x) {
3535 } else if (MaybeExpr argExpr{Analyze(x.v.value())}) {
3547 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::DefinedUnary &x) {
3558 MaybeExpr NumericBinaryHelper(
3580 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Power &x) {
3584 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Multiply &x) {
3588 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Divide &x) {
3592 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Add &x) {
3596 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Subtract &x) {
3600 MaybeExpr ExpressionAnalyzer::Analyze(
3608 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::Concat &x) {
3617 [&](auto &&x, auto &&y) -> MaybeExpr {
3638 MaybeExpr ExpressionAnalyzer::AnalyzeDefinedOp(
3650 MaybeExpr RelationHelper(ExpressionAnalyzer &context, RelationalOperator opr,
3681 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::LT &x) {
3685 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::LE &x) {
3689 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::EQ &x) {
3693 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::NE &x) {
3697 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::GE &x) {
3701 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::GT &x) {
3705 MaybeExpr LogicalBinaryHelper(ExpressionAnalyzer &context, LogicalOperator opr,
3725 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::AND &x) {
3729 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::OR &x) {
3733 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::EQV &x) {
3737 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::NEQV &x) {
3741 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr::DefinedBinary &x) {
3841 MaybeExpr ExpressionAnalyzer::ExprOrVariable(
3853 MaybeExpr result;
3905 MaybeExpr ExpressionAnalyzer::IterativelyAnalyzeSubexpressions(
3941 MaybeExpr result;
3952 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Expr &expr) {
3954 MaybeExpr result;
3971 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Variable &variable) {
3978 MaybeExpr ExpressionAnalyzer::Analyze(const parser::Selector &selector) {
3991 if (MaybeExpr result{Analyze(funcRef->value(), &ctor)}) {
4019 MaybeExpr ExpressionAnalyzer::Analyze(const parser::DataStmtConstant &x) {
4024 MaybeExpr ExpressionAnalyzer::Analyze(const parser::AllocateObject &x) {
4028 MaybeExpr ExpressionAnalyzer::Analyze(const parser::PointerObject &x) {
4042 if (MaybeExpr kind{Analyze(x)}) {
4143 const MaybeExpr &result, TypeCategory category, bool defaultKind) {
4169 MaybeExpr ExpressionAnalyzer::MakeFunctionRef(parser::CharBlock callSite,
4201 MaybeExpr ExpressionAnalyzer::MakeFunctionRef(
4214 MaybeExpr ExpressionAnalyzer::AnalyzeComplex(
4215 MaybeExpr &&re, MaybeExpr &&im, const char *what) {
4234 if (MaybeExpr expr{context_.Analyze(x)}) {
4438 MaybeExpr ArgumentAnalyzer::TryDefinedOp(
4444 MaybeExpr result;
4478 if (MaybeExpr thisResult{TryBoundOp(*binding, passIndex)}) {
4518 MaybeExpr ArgumentAnalyzer::TryDefinedOp(
4523 MaybeExpr result;
4530 if (MaybeExpr thisResult{TryDefinedOp(oprs[i], error)}) {
4549 MaybeExpr ArgumentAnalyzer::TryBoundOp(const Symbol &symbol, int passIndex) {
4724 } else if (MaybeExpr argExpr{AnalyzeExprOrWholeAssumedSizeArray(expr)}) {
4738 MaybeExpr ArgumentAnalyzer::AnalyzeExprOrWholeAssumedSizeArray(
4829 MaybeExpr realExpr{
4837 MaybeExpr unsignedExpr{
4845 MaybeExpr intExpr{