@@ -54,6 +54,7 @@ Ruleset.prototype.eval = function (context) {
54
54
var removeSelector = false ;
55
55
for ( var j = 0 ; j < selector . elements . length ; j ++ ) {
56
56
var el = selector . elements [ j ] ;
57
+ // If selector elements were variables, re-parse to see if they are actually selectors
57
58
if ( el . isVariable && typeof el . value . value === 'string' ) {
58
59
this . parse . parseNode (
59
60
el . value . value ,
@@ -64,25 +65,28 @@ Ruleset.prototype.eval = function (context) {
64
65
el . isVariable = false ;
65
66
if ( result ) {
66
67
result = utils . flattenArray ( result ) ;
67
- that . selectors = that . selectors . slice ( 0 , i + 1 )
68
- . concat ( result , that . selectors . slice ( i + 1 ) ) ;
69
- selCnt += result . length ;
70
- removeSelector = true ;
68
+ // If the parsed element matches itself, it's still an element
69
+ if ( result . length !== 1 || el . value . value !== result [ 0 ] . elements [ 0 ] . value ) {
70
+ that . selectors = that . selectors . slice ( 0 , i + 1 )
71
+ . concat ( result , that . selectors . slice ( i + 1 ) ) ;
72
+ selCnt += result . length ;
73
+ removeSelector = true ;
74
+ }
71
75
}
72
76
} ) ;
73
77
}
74
- // if (el.isVariable && selector._fileInfo.filename.indexOf('parse-') > -1) {
75
- // console.log(el);
76
- // }
77
78
}
78
79
if ( removeSelector ) {
79
80
selCnt -= 1 ;
80
81
this . selectors . splice ( i , 1 ) ;
82
+ i -= 1 ;
81
83
continue ;
82
84
}
83
- selectors [ i ] = selector ;
84
- if ( selector . evaldCondition ) {
85
- hasOnePassingSelector = true ;
85
+ else {
86
+ selectors [ i ] = selector ;
87
+ if ( selector . evaldCondition ) {
88
+ hasOnePassingSelector = true ;
89
+ }
86
90
}
87
91
}
88
92
defaultFunc . reset ( ) ;
0 commit comments