1
0

Pass tests

This commit is contained in:
Jeff 2024-08-15 21:22:24 -04:00
parent 486530610b
commit 44d6a88faa
2 changed files with 32 additions and 27 deletions

View File

@ -1024,22 +1024,28 @@ mod tests {
Ok(AbstractSyntaxTree { Ok(AbstractSyntaxTree {
statements: [Statement::Expression(Expression::block( statements: [Statement::Expression(Expression::block(
Block::Async(vec![ Block::Async(vec![
Statement::Expression(Expression::operator( Statement::ExpressionNullified(Node::new(
OperatorExpression::Assignment { Expression::operator(
assignee: Expression::identifier(Identifier::new("x"), (0, 0)), OperatorExpression::Assignment {
value: Expression::literal(LiteralExpression::Integer(42), (0, 0)), assignee: Expression::identifier(Identifier::new("x"), (8, 9)),
}, value: Expression::literal(
(0, 0) LiteralExpression::Integer(42),
(12, 14)
),
},
(8, 14)
),
(8, 15)
)), )),
Statement::Expression(Expression::operator( Statement::Expression(Expression::operator(
OperatorExpression::Assignment { OperatorExpression::Assignment {
assignee: Expression::identifier(Identifier::new("y"), (0, 0)), assignee: Expression::identifier(Identifier::new("y"), (16, 17)),
value: Expression::literal(LiteralExpression::Float(4.0), (0, 0)), value: Expression::literal(LiteralExpression::Float(4.0), (20, 23)),
}, },
(0, 0) (16, 23)
)) ))
]), ]),
(0, 0) (0, 25)
),)] ),)]
.into() .into()
}) })
@ -1560,45 +1566,45 @@ mod tests {
OperatorExpression::Assignment { OperatorExpression::Assignment {
assignee: Expression::identifier( assignee: Expression::identifier(
Identifier::new("foo"), Identifier::new("foo"),
(0, 0) (2, 5)
), ),
value: Expression::literal( value: Expression::literal(
LiteralExpression::Integer(42), LiteralExpression::Integer(42),
(0, 0) (8, 10)
), ),
}, },
(0, 0) (2, 10)
), ),
(0, 0) (2, 11)
),), ),),
Statement::ExpressionNullified(Node::new( Statement::ExpressionNullified(Node::new(
Expression::operator( Expression::operator(
OperatorExpression::Assignment { OperatorExpression::Assignment {
assignee: Expression::identifier( assignee: Expression::identifier(
Identifier::new("bar"), Identifier::new("bar"),
(0, 0) (12, 15)
), ),
value: Expression::literal( value: Expression::literal(
LiteralExpression::Integer(42), LiteralExpression::Integer(42),
(0, 0) (18, 20)
), ),
}, },
(0, 0) (12, 20)
), ),
(0, 0) (12, 21)
),), ),),
Statement::Expression(Expression::operator( Statement::Expression(Expression::operator(
OperatorExpression::Assignment { OperatorExpression::Assignment {
assignee: Expression::identifier(Identifier::new("baz"), (0, 0)), assignee: Expression::identifier(Identifier::new("baz"), (22, 25)),
value: Expression::literal( value: Expression::literal(
LiteralExpression::String("42".to_string()), LiteralExpression::String("42".to_string()),
(0, 0) (28, 32)
), ),
}, },
(0, 0) (22, 32)
)), )),
]), ]),
(0, 0) (0, 34)
)) ))
])) ]))
) )
@ -1612,10 +1618,10 @@ mod tests {
parse(source), parse(source),
Ok(AbstractSyntaxTree::with_statements([ Ok(AbstractSyntaxTree::with_statements([
Statement::Expression(Expression::operator( Statement::Expression(Expression::operator(
OperatorExpression::Math { OperatorExpression::Comparison {
left: Expression::literal(LiteralExpression::Integer(42), (0, 2)), left: Expression::literal(LiteralExpression::Integer(42), (0, 2)),
operator: Node::new(MathOperator::Divide, (3, 5)), operator: Node::new(ComparisonOperator::Equal, (3, 5)),
right: Expression::literal(LiteralExpression::Integer(2), (6, 8)), right: Expression::literal(LiteralExpression::Integer(42), (6, 8)),
}, },
(0, 8), (0, 8),
)) ))

View File

@ -238,9 +238,8 @@ impl<'src> Token<'src> {
pub fn precedence(&self) -> u8 { pub fn precedence(&self) -> u8 {
match self { match self {
Token::Identifier(_) => 10,
Token::Dot => 9, Token::Dot => 9,
Token::LeftCurlyBrace | Token::LeftParenthesis | Token::LeftSquareBrace => 8, Token::LeftParenthesis | Token::LeftSquareBrace => 8,
Token::Star | Token::Slash | Token::Percent => 7, Token::Star | Token::Slash | Token::Percent => 7,
Token::Minus | Token::Plus => 6, Token::Minus | Token::Plus => 6,
Token::DoubleEqual Token::DoubleEqual