csslint: don't throw on errors caused by USO vars
This commit is contained in:
		
							parent
							
								
									8f9705c165
								
							
						
					
					
						commit
						974b1f9152
					
				|  | @ -3181,6 +3181,17 @@ Parser.prototype = function() { | |||
|              * @private | ||||
|              */ | ||||
|             _unexpectedToken: function(token) { | ||||
|                 for (let i = tokenStream._ltIndex - 1; i >= 0; i--) { | ||||
|                     const {type, value} = tokenStream._lt[i]; | ||||
|                     if (type === tokenStream._tokenData.S) { | ||||
|                         // NOP
 | ||||
|                     } else if (type === tokenStream._tokenData.COMMENT && | ||||
|                             value[2] === '[' && value[3] === '[' && value.endsWith(']]*/')) { | ||||
|                         return; | ||||
|                     } else { | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|                 throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); | ||||
|             }, | ||||
| 
 | ||||
|  | @ -7148,7 +7159,7 @@ TokenStreamBase.prototype = { | |||
|             if (tokenTypes.includes(tt)) { | ||||
|                 return true; | ||||
|             } | ||||
|         } while (tt === 4 && this.LA(0) !== 0); | ||||
|         } while (tt === this._tokenData.COMMENT && this.LA(0) !== 0); | ||||
| 
 | ||||
|         //no match found, put the token back
 | ||||
|         this.unget(); | ||||
|  | @ -10967,25 +10978,6 @@ CSSLint.addFormatter({ | |||
|     } | ||||
| }); | ||||
| 
 | ||||
| if (!CSSLint.suppressUsoVarError) { | ||||
|   CSSLint.suppressUsoVarError = true; | ||||
|   parserlib.css.Tokens[parserlib.css.Tokens.COMMENT].hide = false; | ||||
|   const isUsoVar = ({value}) => value.startsWith('/*[[') && value.endsWith(']]*/'); | ||||
|   CSSLint.addRule({ | ||||
|     id: 'uso-vars', | ||||
|     init(parser, reporter) { | ||||
|       parser.addListener('error', function ({message, line, col}) { | ||||
|         if (!isUsoVar(this._tokenStream._token)) { | ||||
|           const {_lt, _ltIndex: i} = this._tokenStream; | ||||
|           if (i < 2 || !_lt.slice(0, i - 1).reverse().some(isUsoVar)) { | ||||
|             reporter.error(message, line, col); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| self.onmessage = ({data: {action = 'run', code, config}}) => { | ||||
|   switch (action) { | ||||
| 
 | ||||
|  | @ -11000,8 +10992,6 @@ self.onmessage = ({data: {action = 'run', code, config}}) => { | |||
|       return; | ||||
| 
 | ||||
|     case 'run': | ||||
|       Object.defineProperty(config, 'errors', {get: () => 0, set: () => 0}); | ||||
|       config['uso-vars'] = 1; | ||||
|       self.postMessage(CSSLint.verify(code, config).messages.map(m => { | ||||
|         // the functions are non-tranferable and we need only an id
 | ||||
|         m.rule = {id: m.rule.id}; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user