Lines Matching defs:analyzer

672           analyzer.Warn(LanguageFeature::BigIntLiterals, digits,
680 analyzer.Warn(common::UsageWarning::UnsignedLiteralTruncation,
689 !analyzer.context().IsEnabled(LanguageFeature::BigIntLiterals)) {
692 analyzer.Warn(LanguageFeature::BigIntLiterals, digits,
704 ExpressionAnalyzer &analyzer;
3165 ArgumentAnalyzer analyzer{*this, funcRef.source, true /* isProcedureCall */};
3167 analyzer.Analyze(arg, false /* not subroutine call */);
3169 if (analyzer.fatalErrors()) {
3174 std::get<parser::ProcedureDesignator>(call.t), analyzer.GetActuals(),
3222 ArgumentAnalyzer analyzer{*this, callStmt.source, true /* isProcedureCall */};
3225 analyzer.Analyze(arg, true /* is subroutine call */);
3228 chevrons && !analyzer.fatalErrors()) {
3231 analyzer.GetActuals(), true /* subroutine */)}) {
3276 ArgumentAnalyzer analyzer{*this};
3278 analyzer.Analyze(variable);
3279 analyzer.Analyze(std::get<parser::Expr>(x.t));
3281 if (!analyzer.fatalErrors()) {
3283 std::optional<ProcedureRef> procRef{analyzer.TryDefinedAssignment()};
3285 analyzer.CheckForNullPointer(
3287 analyzer.CheckForAssumedRank("in an assignment statement");
3288 const Expr<SomeType> &lhs{analyzer.GetExpr(0)};
3301 assignment.emplace(analyzer.MoveExpr(0), analyzer.MoveExpr(1));
3477 ArgumentAnalyzer analyzer{context};
3478 analyzer.Analyze(x.v);
3479 if (!analyzer.fatalErrors()) {
3480 if (analyzer.IsIntrinsicNumeric(opr)) {
3481 analyzer.CheckForNullPointer();
3482 analyzer.CheckForAssumedRank();
3484 return analyzer.MoveExpr(0);
3486 return Negation(context.GetContextualMessages(), analyzer.MoveExpr(0));
3489 return analyzer.TryDefinedOp(AsFortran(opr),
3512 ArgumentAnalyzer analyzer{*this};
3513 analyzer.Analyze(x.v);
3514 if (!analyzer.fatalErrors()) {
3515 if (analyzer.IsIntrinsicLogical()) {
3516 analyzer.CheckForNullPointer();
3517 analyzer.CheckForAssumedRank();
3519 LogicalNegation(std::get<Expr<SomeLogical>>(analyzer.MoveExpr(0).u)));
3521 return analyzer.TryDefinedOp(LogicalOperator::Not,
3549 ArgumentAnalyzer analyzer{*this, name.source};
3550 analyzer.Analyze(std::get<1>(x.t));
3551 return analyzer.TryDefinedOp(name.source.ToString().c_str(),
3560 ArgumentAnalyzer analyzer{context};
3561 analyzer.Analyze(std::get<0>(x.t));
3562 analyzer.Analyze(std::get<1>(x.t));
3563 if (!analyzer.fatalErrors()) {
3564 if (analyzer.IsIntrinsicNumeric(opr)) {
3565 analyzer.CheckForNullPointer();
3566 analyzer.CheckForAssumedRank();
3567 analyzer.CheckConformance();
3570 context.GetContextualMessages(), analyzer.MoveExpr(0),
3571 analyzer.MoveExpr(1), context.GetDefaultKind(TypeCategory::Real));
3573 return analyzer.TryDefinedOp(AsFortran(opr),
3609 ArgumentAnalyzer analyzer{*this};
3610 analyzer.Analyze(std::get<0>(x.t));
3611 analyzer.Analyze(std::get<1>(x.t));
3612 if (!analyzer.fatalErrors()) {
3613 if (analyzer.IsIntrinsicConcat()) {
3614 analyzer.CheckForNullPointer();
3615 analyzer.CheckForAssumedRank();
3625 std::move(std::get<Expr<SomeCharacter>>(analyzer.MoveExpr(0).u).u),
3626 std::move(std::get<Expr<SomeCharacter>>(analyzer.MoveExpr(1).u).u));
3628 return analyzer.TryDefinedOp("//",
3652 ArgumentAnalyzer analyzer{context};
3653 analyzer.Analyze(std::get<0>(x.t));
3654 analyzer.Analyze(std::get<1>(x.t));
3655 if (!analyzer.fatalErrors()) {
3656 std::optional<DynamicType> leftType{analyzer.GetType(0)};
3657 std::optional<DynamicType> rightType{analyzer.GetType(1)};
3658 analyzer.ConvertBOZ(&leftType, 0, rightType);
3659 analyzer.ConvertBOZ(&rightType, 1, leftType);
3661 analyzer.IsIntrinsicRelational(opr, *leftType, *rightType)) {
3662 analyzer.CheckForNullPointer("as a relational operand");
3663 analyzer.CheckForAssumedRank("as a relational operand");
3665 analyzer.MoveExpr(0), analyzer.MoveExpr(1))}) {
3671 return analyzer.TryDefinedOp(opr,
3707 ArgumentAnalyzer analyzer{context};
3708 analyzer.Analyze(std::get<0>(x.t));
3709 analyzer.Analyze(std::get<1>(x.t));
3710 if (!analyzer.fatalErrors()) {
3711 if (analyzer.IsIntrinsicLogical()) {
3712 analyzer.CheckForNullPointer("as a logical operand");
3713 analyzer.CheckForAssumedRank("as a logical operand");
3715 std::get<Expr<SomeLogical>>(analyzer.MoveExpr(0).u),
3716 std::get<Expr<SomeLogical>>(analyzer.MoveExpr(1).u)));
3718 return analyzer.TryDefinedOp(
3743 ArgumentAnalyzer analyzer{*this, name.source};
3744 analyzer.Analyze(std::get<1>(x.t));
3745 analyzer.Analyze(std::get<2>(x.t));
3746 return analyzer.TryDefinedOp(name.source.ToString().c_str(),
3903 // absurdly deep expression parse trees from causing the analyzer to overflow
4926 evaluate::ExpressionAnalyzer analyzer{context};
4929 analyzer.GetContextualMessages().SetLocation(*context.location())};
4930 return analyzer.AnalyzeKindSelector(category, selector);