Commit 6cda1442 by Aaron Leung

Adding some extra meta-info to the nodes for control directives.

parent 871c01c2
...@@ -409,7 +409,7 @@ namespace Sass { ...@@ -409,7 +409,7 @@ namespace Sass {
case Node::for_to_directive: { case Node::for_to_directive: {
Node fake_mixin(new_Node(Node::mixin, expr.path(), expr.line(), 3)); Node fake_mixin(new_Node(Node::mixin, expr.path(), expr.line(), 3));
Node fake_param(new_Node(Node::parameters, expr.path(), expr.line(), 1)); Node fake_param(new_Node(Node::parameters, expr.path(), expr.line(), 1));
fake_mixin << new_Node(Node::none, "", 0, 0) << (fake_param << expr[0]) << expr[3]; fake_mixin << new_Node(Node::identifier, "", 0, Token::make(Prelexer::for_kwd)) << (fake_param << expr[0]) << expr[3];
Node lower_bound(eval(expr[1], prefix, env, f_env, new_Node, ctx)); Node lower_bound(eval(expr[1], prefix, env, f_env, new_Node, ctx));
Node upper_bound(eval(expr[2], prefix, env, f_env, new_Node, ctx)); Node upper_bound(eval(expr[2], prefix, env, f_env, new_Node, ctx));
if (!(lower_bound.is_numeric() && upper_bound.is_numeric())) { if (!(lower_bound.is_numeric() && upper_bound.is_numeric())) {
...@@ -433,7 +433,7 @@ namespace Sass { ...@@ -433,7 +433,7 @@ namespace Sass {
case Node::each_directive: { case Node::each_directive: {
Node fake_mixin(new_Node(Node::mixin, expr.path(), expr.line(), 3)); Node fake_mixin(new_Node(Node::mixin, expr.path(), expr.line(), 3));
Node fake_param(new_Node(Node::parameters, expr.path(), expr.line(), 1)); Node fake_param(new_Node(Node::parameters, expr.path(), expr.line(), 1));
fake_mixin << new_Node(Node::none, "", 0, 0) << (fake_param << expr[0]) << expr[2]; fake_mixin << new_Node(Node::identifier, "", 0, Token::make(Prelexer::each_kwd)) << (fake_param << expr[0]) << expr[2];
Node list(eval(expr[1], prefix, env, f_env, new_Node, ctx)); Node list(eval(expr[1], prefix, env, f_env, new_Node, ctx));
// If the list isn't really a list, make a singleton out of it. // If the list isn't really a list, make a singleton out of it.
if (list.type() != Node::space_list && list.type() != Node::comma_list) { if (list.type() != Node::space_list && list.type() != Node::comma_list) {
...@@ -453,7 +453,7 @@ namespace Sass { ...@@ -453,7 +453,7 @@ namespace Sass {
Node fake_mixin(new_Node(Node::mixin, expr.path(), expr.line(), 3)); Node fake_mixin(new_Node(Node::mixin, expr.path(), expr.line(), 3));
Node fake_param(new_Node(Node::parameters, expr.path(), expr.line(), 0)); Node fake_param(new_Node(Node::parameters, expr.path(), expr.line(), 0));
Node fake_arg(new_Node(Node::arguments, expr.path(), expr.line(), 0)); Node fake_arg(new_Node(Node::arguments, expr.path(), expr.line(), 0));
fake_mixin << new_Node(Node::none, "", 0, 0) << fake_param << expr[1]; fake_mixin << new_Node(Node::identifier, "", 0, Token::make(Prelexer::while_kwd)) << fake_param << expr[1];
Node pred(expr[0]); Node pred(expr[0]);
expr.pop_back(); expr.pop_back();
expr.pop_back(); expr.pop_back();
...@@ -716,6 +716,7 @@ namespace Sass { ...@@ -716,6 +716,7 @@ namespace Sass {
for (size_t i = 0, S = body.size(); i < S; ++i) { for (size_t i = 0, S = body.size(); i < S; ++i) {
body[i] = eval(body[i], prefix, bindings, f_env, new_Node, ctx); body[i] = eval(body[i], prefix, bindings, f_env, new_Node, ctx);
} }
// cerr << "expanded " << mixin_name.str() << endl;
return body; return body;
} }
......
...@@ -450,5 +450,10 @@ namespace Sass { ...@@ -450,5 +450,10 @@ namespace Sass {
return counter; return counter;
} }
extern const char if_kwd[];
extern const char for_kwd[];
extern const char each_kwd[];
extern const char while_kwd[];
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment