From 9b8547ce4a4e85d897c1893e6fbf18e615332ae7 Mon Sep 17 00:00:00 2001 From: Ben Griffith Date: Mon, 21 Sep 2015 13:17:39 +0100 Subject: [PATCH] Fix Sass issue with extends before mixins --- lib/rules/extends-before-mixins.js | 33 +++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/rules/extends-before-mixins.js b/lib/rules/extends-before-mixins.js index 4ca0fab1..5f565fec 100644 --- a/lib/rules/extends-before-mixins.js +++ b/lib/rules/extends-before-mixins.js @@ -10,22 +10,35 @@ module.exports = { ast.traverseByType('block', function (block) { var lastMixin = null; - block.traverse(function (item, j) { - if (item.type === 'extend') { - if (j > lastMixin && lastMixin !== null) { - result = helpers.addUnique(result, { - 'ruleId': parser.rule.name, - 'line': item.start.line, - 'column': item.start.column, - 'message': 'Extends should come before mixins', - 'severity': parser.severity - }); + + block.forEach(function (item, j) { + if (item.type === 'include' || item.type === 'extend') { + if (item.first('atkeyword')) { + var atkeyword = item.first('atkeyword'); + + if (atkeyword.first('ident')) { + var ident = atkeyword.first('ident'); + + if (ident.content === 'extend') { + if (j > lastMixin && lastMixin !== null) { + result = helpers.addUnique(result, { + 'ruleId': parser.rule.name, + 'line': item.start.line, + 'column': item.start.column, + 'message': 'Extends should come before mixins', + 'severity': parser.severity + }); + } + } + } } } + if (item.type === 'include') { lastMixin = j; } }); + lastMixin = null; });