lookingGlass: Stop using eval()
Its use is not only strongly discouraged[0], we also rely on it injecting variables into the global scope to get command-line-like behavior. That behavior is incompatible with strict mode[1], and in extension with ES6 classes (which imply strict mode). So to prepare for porting to ES6 classes, replace it with a somewhat less evil construct that is compatible with strict mode. [0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Do_not_ever_use_eval! [1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode#Simplifying_variable_uses https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/350
This commit is contained in:
parent
97963a1ca8
commit
467b7c1bca
@ -1003,11 +1003,14 @@ var LookingGlass = new Lang.Class({
|
|||||||
_evaluate(command) {
|
_evaluate(command) {
|
||||||
this._history.addItem(command);
|
this._history.addItem(command);
|
||||||
|
|
||||||
let fullCmd = commandHeader + command;
|
let lines = command.split(';');
|
||||||
|
lines.push(`return ${lines.pop()}`);
|
||||||
|
|
||||||
|
let fullCmd = commandHeader + lines.join(';');
|
||||||
|
|
||||||
let resultObj;
|
let resultObj;
|
||||||
try {
|
try {
|
||||||
resultObj = eval(fullCmd);
|
resultObj = Function(fullCmd)();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
resultObj = '<exception ' + e + '>';
|
resultObj = '<exception ' + e + '>';
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user