Skip to content
This repository was archived by the owner on Oct 24, 2025. It is now read-only.

Commit 6ba9d8c

Browse files
author
Aaron Leung
committed
Fully evaluating the arguments to the comparison operators.
1 parent 9c16b17 commit 6ba9d8c

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

eval_apply.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,14 +302,25 @@ namespace Sass {
302302
} break;
303303

304304
case Node::relation: {
305-
Node lhs(eval(expr[0], prefix, env, f_env, new_Node, ctx));
306-
Node op(expr[1]);
307-
Node rhs(eval(expr[2], prefix, env, f_env, new_Node, ctx));
305+
// Node lhs(eval(expr[0], prefix, env, f_env, new_Node, ctx));
306+
// Node op(expr[1]);
307+
// Node rhs(eval(expr[2], prefix, env, f_env, new_Node, ctx));
308+
309+
Node lhs(new_Node(Node::arguments, expr[0].path(), expr[0].line(), 1));
310+
Node rhs(new_Node(Node::arguments, expr[2].path(), expr[2].line(), 1));
311+
Node rel(expr[1]);
312+
313+
lhs << expr[0];
314+
rhs << expr[2];
315+
lhs = eval_arguments(lhs, prefix, env, f_env, new_Node, ctx);
316+
rhs = eval_arguments(rhs, prefix, env, f_env, new_Node, ctx);
317+
lhs = lhs[0];
318+
rhs = rhs[0];
308319

309320
Node T(new_Node(Node::boolean, lhs.path(), lhs.line(), true));
310321
Node F(new_Node(Node::boolean, lhs.path(), lhs.line(), false));
311322

312-
switch (op.type())
323+
switch (rel.type())
313324
{
314325
case Node::eq: result = ((lhs == rhs) ? T : F); break;
315326
case Node::neq: result = ((lhs != rhs) ? T : F); break;

eval_apply.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace Sass {
1515

1616
void expand(Node expr, Node prefix, Environment& env, map<string, Function>& f_env, Node_Factory& new_Node, Context& ctx, bool function_name = false);
1717
Node eval(Node expr, Node prefix, Environment& env, map<string, Function>& f_env, Node_Factory& new_Node, Context& ctx, bool function_name = false);
18+
Node eval_arguments(Node args, Node prefix, Environment& env, map<string, Function>& f_env, Node_Factory& new_Node, Context& ctx);
1819
Node eval_function(string name, Node stm, Environment& bindings, Node_Factory& new_Node, Context& ctx, bool toplevel = false);
1920
Node reduce(Node list, size_t head, Node acc, Node_Factory& new_Node);
2021
Node accumulate(Node::Type op, Node acc, Node rhs, Node_Factory& new_Node);

0 commit comments

Comments
 (0)