CSSLint: reset parserlib cache when inline overrides change
This commit is contained in:
parent
7a48484463
commit
ded40b7aba
|
@ -126,6 +126,9 @@ var CSSLint = (() => {
|
||||||
};
|
};
|
||||||
const rules = [];
|
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(), {
|
return Object.assign(new parserlib.util.EventTarget(), {
|
||||||
|
|
||||||
addRule(rule) {
|
addRule(rule) {
|
||||||
|
@ -193,8 +196,13 @@ var CSSLint = (() => {
|
||||||
rules[id] &&
|
rules[id] &&
|
||||||
rules[id].init(parser, reporter));
|
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 {
|
try {
|
||||||
parser.parse(text, {reuseCache: true});
|
parser.parse(text, {reuseCache});
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
reporter.error('Fatal error, cannot continue: ' + ex.message, ex.line, ex.col, {});
|
reporter.error('Fatal error, cannot continue: ' + ex.message, ex.line, ex.col, {});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user