diff --git a/vendor-overwrites/csslint/csslint.js b/vendor-overwrites/csslint/csslint.js index 37cc2e7d..b6f09f85 100644 --- a/vendor-overwrites/csslint/csslint.js +++ b/vendor-overwrites/csslint/csslint.js @@ -126,6 +126,9 @@ var CSSLint = (() => { }; const rules = []; + // previous CSSLint overrides are used to decide whether the parserlib's cache should be reset + let prevOverrides; + return Object.assign(new parserlib.util.EventTarget(), { addRule(rule) { @@ -193,8 +196,13 @@ var CSSLint = (() => { rules[id] && rules[id].init(parser, reporter)); + // TODO: when ruleset is unchanged we can try to invalidate only line ranges in 'allow' and 'ignore' + const newOvr = [ruleset, allow, ignore]; + const reuseCache = !prevOverrides || JSON.stringify(prevOverrides) === JSON.stringify(newOvr); + prevOverrides = newOvr; + try { - parser.parse(text, {reuseCache: true}); + parser.parse(text, {reuseCache}); } catch (ex) { reporter.error('Fatal error, cannot continue: ' + ex.message, ex.line, ex.col, {}); }