mirror of
https://github.com/less/less.js.git
synced 2026-04-09 03:00:20 -04:00
self referencing variable gives a proper error (no stack overflow). Fixes #972
This commit is contained in:
@@ -8,12 +8,24 @@ tree.Variable.prototype = {
|
||||
if (name.indexOf('@@') == 0) {
|
||||
name = '@' + new(tree.Variable)(name.slice(1)).eval(env).value;
|
||||
}
|
||||
|
||||
if (this.evaluating) {
|
||||
throw { type: 'Name',
|
||||
message: "Recursive variable definition for " + name,
|
||||
filename: this.file,
|
||||
index: this.index };
|
||||
}
|
||||
|
||||
this.evaluating = true;
|
||||
|
||||
if (variable = tree.find(env.frames, function (frame) {
|
||||
if (v = frame.variable(name)) {
|
||||
return v.value.eval(env);
|
||||
}
|
||||
})) { return variable }
|
||||
})) {
|
||||
this.evaluating = false;
|
||||
return variable;
|
||||
}
|
||||
else {
|
||||
throw { type: 'Name',
|
||||
message: "variable " + name + " is undefined",
|
||||
|
||||
1
test/less/errors/recursive-variable.less
Normal file
1
test/less/errors/recursive-variable.less
Normal file
@@ -0,0 +1 @@
|
||||
@bodyColor: darken(@bodyColor, 30%);
|
||||
2
test/less/errors/recursive-variable.txt
Normal file
2
test/less/errors/recursive-variable.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
NameError: Recursive variable definition for @bodyColor in {path}recursive-variable.less:1:19
|
||||
1 @bodyColor: darken(@bodyColor, 30%);
|
||||
Reference in New Issue
Block a user