@@ -188,6 +188,7 @@ pub enum Symbolic {
188
188
/// Generic parameter
189
189
Generic ( Ident ) ,
190
190
Add ( Box < Symbolic > , Box < Symbolic > ) ,
191
+ Sub ( Box < Symbolic > , Box < Symbolic > ) ,
191
192
Mul ( Box < Symbolic > , Box < Symbolic > ) ,
192
193
}
193
194
@@ -198,6 +199,7 @@ impl Display for Symbolic {
198
199
Symbolic :: Constant ( ident) => write ! ( f, "{}" , ident. value) ,
199
200
Symbolic :: Generic ( ident) => write ! ( f, "{}" , ident. value) ,
200
201
Symbolic :: Add ( lhs, rhs) => write ! ( f, "{} + {}" , lhs, rhs) ,
202
+ Symbolic :: Sub ( lhs, rhs) => write ! ( f, "{} - {}" , lhs, rhs) ,
201
203
Symbolic :: Mul ( lhs, rhs) => write ! ( f, "{} * {}" , lhs, rhs) ,
202
204
}
203
205
}
@@ -219,7 +221,7 @@ impl Symbolic {
219
221
Symbolic :: Generic ( ident) => {
220
222
generics. insert ( ident. value . clone ( ) ) ;
221
223
}
222
- Symbolic :: Add ( lhs, rhs) | Symbolic :: Mul ( lhs, rhs) => {
224
+ Symbolic :: Add ( lhs, rhs) | Symbolic :: Mul ( lhs, rhs) | Symbolic :: Sub ( lhs , rhs ) => {
223
225
generics. extend ( lhs. extract_generics ( ) ) ;
224
226
generics. extend ( rhs. extract_generics ( ) ) ;
225
227
}
@@ -251,6 +253,7 @@ impl Symbolic {
251
253
// no protected flags are needed, as this is based on expression nodes which already ordered the operations
252
254
match op {
253
255
Op2 :: Addition => Ok ( Symbolic :: Add ( Box :: new ( lhs) , Box :: new ( rhs?) ) ) ,
256
+ Op2 :: Subtraction => Ok ( Symbolic :: Sub ( Box :: new ( lhs) , Box :: new ( rhs?) ) ) ,
254
257
Op2 :: Multiplication => Ok ( Symbolic :: Mul ( Box :: new ( lhs) , Box :: new ( rhs?) ) ) ,
255
258
_ => Err ( Error :: new (
256
259
"mast" ,
0 commit comments