Commit 22059711 by Aaron Leung

Checking validity of keyword args.

parent 7743908a
...@@ -311,7 +311,6 @@ namespace Sass { ...@@ -311,7 +311,6 @@ namespace Sass {
double operate(Node::Type op, double lhs, double rhs) double operate(Node::Type op, double lhs, double rhs)
{ {
// TO DO: check for division by zero
switch (op) switch (op)
{ {
case Node::add: return lhs + rhs; break; case Node::add: return lhs + rhs; break;
...@@ -332,6 +331,17 @@ namespace Sass { ...@@ -332,6 +331,17 @@ namespace Sass {
if (args[i].type == Node::assignment) { if (args[i].type == Node::assignment) {
Node arg(args[i]); Node arg(args[i]);
Token name(arg[0].content.token); Token name(arg[0].content.token);
// check that the keyword arg actually names a formal parameter
bool valid_param = false;
for (int k = 0; k < params.size(); ++k) {
Node param_k = params[k];
if (param_k.type == Node::assignment) param_k = param_k[0];
if (arg[0] == param_k) {
valid_param = true;
break;
}
}
if (!valid_param) eval_error("mixin " + mixin[0].to_string("") + " has no parameter named " + name.to_string(), arg.line_number, arg.file_name);
if (!bindings.query(name)) { if (!bindings.query(name)) {
bindings[name] = eval(arg[1], env, f_env); bindings[name] = eval(arg[1], env, f_env);
} }
......
...@@ -29,3 +29,13 @@ div[hux ~= "hello"] { ...@@ -29,3 +29,13 @@ div[hux ~= "hello"] {
moo: rgba(0,0,0,.5) + 3; moo: rgba(0,0,0,.5) + 3;
} }
$y: hey;
@mixin foo($x) {
foofoo: $x $y;
}
div {
@include foo($x: ho, goo, hey, boo);
}
\ No newline at end of file
...@@ -32,6 +32,7 @@ namespace Sass { ...@@ -32,6 +32,7 @@ namespace Sass {
return true; return true;
} break; } break;
case variable:
case identifier: case identifier:
case uri: case uri:
case textual_percentage: case textual_percentage:
......
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