| 8832 | } |
| 8833 | |
| 8834 | NonnullRefPtr<typename Jakt::parser::ParsedExpression> Jakt::parser::Parser::parse_operator(bool const allow_assignments) { |
| 8835 | { |
| 8836 | Jakt::utility::Span const span = this->current().span(); |
| 8837 | Jakt::parser::BinaryOperator const op = ({ |
| 8838 | auto&& _jakt_value = ([&]() -> JaktInternal::ExplicitValueOrControlFlow<Jakt::parser::BinaryOperator, NonnullRefPtr<typename Jakt::parser::ParsedExpression>>{ |
| 8839 | auto&& __jakt_match_variant = this->current(); |
| 8840 | switch(__jakt_match_variant.__jakt_init_index()) { |
| 8841 | case 50 /* QuestionMarkQuestionMark */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::NoneCoalescing()); |
| 8842 | case 14 /* Plus */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::Add()); |
| 8843 | case 15 /* Minus */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::Subtract()); |
| 8844 | case 36 /* Asterisk */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::Multiply()); |
| 8845 | case 47 /* ForwardSlash */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::Divide()); |
| 8846 | case 13 /* PercentSign */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::Modulo()); |
| 8847 | case 59 /* And */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::LogicalAnd()); |
| 8848 | case 90 /* Or */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::LogicalOr()); |
| 8849 | case 25 /* DoubleEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::Equal()); |
| 8850 | case 24 /* NotEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::NotEqual()); |
| 8851 | case 28 /* LessThan */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::LessThan()); |
| 8852 | case 29 /* LessThanOrEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::LessThanOrEqual()); |
| 8853 | case 26 /* GreaterThan */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::GreaterThan()); |
| 8854 | case 27 /* GreaterThanOrEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::GreaterThanOrEqual()); |
| 8855 | case 37 /* Ampersand */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseAnd()); |
| 8856 | case 39 /* AmpersandAmpersand */:{ |
| 8857 | this->error(ByteString::from_utf8_without_validation("‘&&’ is not allowed, use ‘and’ instead"sv),span); |
| 8858 | return JaktInternal::ExplicitValue<Jakt::parser::BinaryOperator>(Jakt::parser::BinaryOperator::LogicalAnd()); |
| 8859 | } |
| 8860 | VERIFY_NOT_REACHED(); |
| 8861 | case 40 /* Pipe */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseOr()); |
| 8862 | case 42 /* PipePipe */:{ |
| 8863 | this->error(ByteString::from_utf8_without_validation("‘||’ is not allowed, use ‘or’ instead"sv),span); |
| 8864 | return JaktInternal::ExplicitValue<Jakt::parser::BinaryOperator>(Jakt::parser::BinaryOperator::LogicalOr()); |
| 8865 | } |
| 8866 | VERIFY_NOT_REACHED(); |
| 8867 | case 43 /* Caret */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseXor()); |
| 8868 | case 31 /* LeftShift */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseLeftShift()); |
| 8869 | case 33 /* RightShift */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseRightShift()); |
| 8870 | case 30 /* LeftArithmeticShift */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::ArithmeticLeftShift()); |
| 8871 | case 34 /* RightArithmeticShift */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::ArithmeticRightShift()); |
| 8872 | case 16 /* Equal */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::Assign()); |
| 8873 | case 32 /* LeftShiftEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseLeftShiftAssign()); |
| 8874 | case 35 /* RightShiftEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseRightShiftAssign()); |
| 8875 | case 38 /* AmpersandEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseAndAssign()); |
| 8876 | case 41 /* PipeEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseOrAssign()); |
| 8877 | case 44 /* CaretEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::BitwiseXorAssign()); |
| 8878 | case 17 /* PlusEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::AddAssign()); |
| 8879 | case 19 /* MinusEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::SubtractAssign()); |
| 8880 | case 21 /* AsteriskEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::MultiplyAssign()); |
| 8881 | case 22 /* ForwardSlashEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::DivideAssign()); |
| 8882 | case 23 /* PercentSignEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::ModuloAssign()); |
| 8883 | case 51 /* QuestionMarkQuestionMarkEqual */:return JaktInternal::ExplicitValue(Jakt::parser::BinaryOperator::NoneCoalescingAssign()); |
| 8884 | default:{ |
| 8885 | return Jakt::parser::ParsedExpression::Garbage(span); |
| 8886 | } |
| 8887 | }/*switch end*/ |
| 8888 | }() |
| 8889 | ); |
| 8890 | if (_jakt_value.is_return()) |
| 8891 | return _jakt_value.release_return(); |
no test coverage detected