diff --git a/src/value/parse.rs b/src/value/parse.rs index 04c6520..7597b7b 100644 --- a/src/value/parse.rs +++ b/src/value/parse.rs @@ -378,7 +378,27 @@ fn single_value>( span: next.span.merge(val.span), } } - _ => todo!(), + Op::And => { + Spanned { + node: Value::Ident( + "and".into(), + QuoteKind::None, + ), + span: next.span, + } + } + Op::Or => { + Spanned { + node: Value::Ident( + "or".into(), + QuoteKind::None, + ), + span: next.span, + } + } + _ => { + return Err(("Expected expression.", next.span).into()); + } }, IntermediateValue::Whitespace => unreachable!(), IntermediateValue::Comma => return Err(("Expected expression.", span).into()), diff --git a/tests/and.rs b/tests/and.rs index 36d89f2..dd48b9f 100644 --- a/tests/and.rs +++ b/tests/and.rs @@ -40,3 +40,14 @@ test!( "a {\n color: 1 and 2 and 3;\n}\n", "a {\n color: 3;\n}\n" ); +test!( + part_of_binop, + "a {\n color: 1 - and;\n}\n", + "a {\n color: 1-and;\n}\n" +); +test!( + #[ignore = "casing is not preserved for keyword operators"] + part_of_binop_casing, + "a {\n color: 1 - AND;\n}\n", + "a {\n color: 1-AND;\n}\n" +); diff --git a/tests/error.rs b/tests/error.rs index 8acb405..72d8124 100644 --- a/tests/error.rs +++ b/tests/error.rs @@ -130,3 +130,35 @@ error!( tilde_in_value, "a {color: ~a;}", "Error: Expected expression." ); +error!( + subtract_rem, + "a {color: 5 - %;}", "Error: Expected expression." +); +error!( + operator_eq, + "a {color: 5 - ==;}", "Error: Expected expression." +); +error!( + operator_ne, + "a {color: 5 - !=;}", "Error: Expected expression." +); +error!( + operator_gt, + "a {color: 5 - >;}", "Error: Expected expression." +); +error!( + operator_lt, + "a {color: 5 - <;}", "Error: Expected expression." +); +error!( + operator_ge, + "a {color: 5 - >=;}", "Error: Expected expression." +); +error!( + operator_le, + "a {color: 5 - <=;}", "Error: Expected expression." +); +error!( + operator_mul, + "a {color: 5 - *;}", "Error: Expected expression." +); diff --git a/tests/or.rs b/tests/or.rs index f0ade8e..2aaa7b2 100644 --- a/tests/or.rs +++ b/tests/or.rs @@ -48,3 +48,14 @@ test!( "a {\n color: 1 or 2 or 3;\n}\n", "a {\n color: 1;\n}\n" ); +test!( + part_of_binop, + "a {\n color: 1 - or;\n}\n", + "a {\n color: 1-or;\n}\n" +); +test!( + #[ignore = "casing is not preserved for keyword operators"] + part_of_binop_casing, + "a {\n color: 1 - OR;\n}\n", + "a {\n color: 1-OR;\n}\n" +);