$$ = new SetExpression(MakeIndexer(ScopeGlobal, $2), OpSetLiteral, $4);
free($2);
}
+ | T_VAR rterm
+ {
+ Expression *expr = $2;
+ BindToScope(expr, ScopeLocal);
+ $$ = new SetExpression(expr, OpSetLiteral, MakeLiteral(), DebugInfoRange(@1, @2));
+ }
+ | T_VAR rterm combined_set_op rterm
+ {
+ Expression *expr = $2;
+ BindToScope(expr, ScopeLocal);
+ $$ = new SetExpression(expr, $3, $4, DebugInfoRange(@1, @4));
+ }
| rterm
{
$$ = $1;
{
$$ = new GetScopeExpression(ScopeThis);
}
- | T_VAR rterm
- {
- Expression *expr = $2;
- BindToScope(expr, ScopeLocal);
- $$ = new SetExpression(expr, OpSetLiteral, MakeLiteral(), DebugInfoRange(@1, @2));
- }
- | T_VAR rterm combined_set_op rterm
- {
- Expression *expr = $2;
- BindToScope(expr, ScopeLocal);
- $$ = new SetExpression(expr, $3, $4, DebugInfoRange(@1, @4));
- }
| rterm_array
{
$$ = $1;
expr = ConfigCompiler::CompileText("<test>", "3 = 3");
BOOST_CHECK_THROW(expr->Evaluate(frame), ScriptError);
delete expr;
+
+ expr = ConfigCompiler::CompileText("<test>", "var e; e");
+ BOOST_CHECK(expr->Evaluate(frame).IsEmpty());
+ delete expr;
+
+ expr = ConfigCompiler::CompileText("<test>", "var e = 3; e");
+ BOOST_CHECK(expr->Evaluate(frame) == 3);
+ delete expr;
}
BOOST_AUTO_TEST_SUITE_END()