|
|
|
@ -200,17 +200,20 @@ ClParser.prototype.addLine = function (line) {
|
|
|
|
|
ClParser.prototype.findUsed = function () {
|
|
|
|
|
// TODO: quadratic!
|
|
|
|
|
debug("Ooce");
|
|
|
|
|
for (var i = 0; i < 100; ++i) {
|
|
|
|
|
var changed = false;
|
|
|
|
|
_.each(this.labels, function (key, label) {
|
|
|
|
|
_.each(this.result, function (obj) {
|
|
|
|
|
if (!obj.keep && obj.label == label) {
|
|
|
|
|
debug("RESURRECTED", obj);
|
|
|
|
|
obj.keep = true;
|
|
|
|
|
changed = true;
|
|
|
|
|
}
|
|
|
|
|
}, this);
|
|
|
|
|
var changed = false;
|
|
|
|
|
var findUsedInternal = function (key, label) {
|
|
|
|
|
_.each(this.result, function (obj) {
|
|
|
|
|
if (!obj.keep && obj.label == label) {
|
|
|
|
|
debug("RESURRECTED", obj);
|
|
|
|
|
obj.keep = true;
|
|
|
|
|
changed = true;
|
|
|
|
|
}
|
|
|
|
|
}, this);
|
|
|
|
|
};
|
|
|
|
|
var MaxIterations = 100;
|
|
|
|
|
for (var i = 0; i < MaxIterations; ++i) {
|
|
|
|
|
changed = false;
|
|
|
|
|
_.each(this.labels, findUsedInternal, this);
|
|
|
|
|
if (!changed) return;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|