@@ -31,7 +31,16 @@ impl Evaluator {
31
31
Expression :: True ( _) => LuaValue :: True ,
32
32
Expression :: Binary ( binary) => self . evaluate_binary ( binary) ,
33
33
Expression :: Unary ( unary) => self . evaluate_unary ( unary) ,
34
- _ => LuaValue :: Unknown ,
34
+ Expression :: Parenthese ( parenthese) => {
35
+ // when the evaluator will be able to manage tuples, keep only the first element
36
+ // of the tuple here (or coerce the tuple to `nil` if it is empty)
37
+ self . evaluate ( parenthese. inner_expression ( ) )
38
+ }
39
+ Expression :: Call ( _)
40
+ | Expression :: Field ( _)
41
+ | Expression :: Identifier ( _)
42
+ | Expression :: Index ( _)
43
+ | Expression :: VariableArguments ( _) => LuaValue :: Unknown ,
35
44
}
36
45
}
37
46
@@ -277,8 +286,15 @@ mod test {
277
286
true_expression( Expression :: from( true ) ) => LuaValue :: True ,
278
287
false_expression( Expression :: from( false ) ) => LuaValue :: False ,
279
288
nil_expression( Expression :: nil( ) ) => LuaValue :: Nil ,
280
- number_expression( Expression :: Number ( DecimalNumber :: new( 0.0 ) . into ( ) ) ) => LuaValue :: Number ( 0.0 ) ,
289
+ number_expression( DecimalNumber :: new( 0.0 ) ) => LuaValue :: Number ( 0.0 ) ,
281
290
string_expression( StringExpression :: from_value( "foo" ) ) => LuaValue :: String ( "foo" . to_owned( ) ) ,
291
+ true_wrapped_in_parens( ParentheseExpression :: new( true ) ) => LuaValue :: True ,
292
+ false_wrapped_in_parens( ParentheseExpression :: new( false ) ) => LuaValue :: False ,
293
+ nil_wrapped_in_parens( ParentheseExpression :: new( Expression :: nil( ) ) ) => LuaValue :: Nil ,
294
+ number_wrapped_in_parens( ParentheseExpression :: new( DecimalNumber :: new( 0.0 ) ) )
295
+ => LuaValue :: Number ( 0.0 ) ,
296
+ string_wrapped_in_parens( ParentheseExpression :: new( StringExpression :: from_value( "foo" ) ) )
297
+ => LuaValue :: String ( "foo" . to_owned( ) ) ,
282
298
table_expression( TableExpression :: default ( ) ) => LuaValue :: Table
283
299
) ;
284
300
0 commit comments