@@ -836,6 +836,63 @@ it('should not parse invalid arbitrary values', () => {
836836 }
837837} )
838838
839+ it ( 'should not parse invalid arbitrary values in variants' , ( ) => {
840+ let utilities = new Utilities ( )
841+ utilities . static ( 'flex' , ( ) => [ ] )
842+
843+ let variants = new Variants ( )
844+ variants . functional ( 'data' , ( ) => { } )
845+
846+ for ( let candidate of [
847+ 'data-foo-[#0088cc]:flex' ,
848+ 'data-foo[#0088cc]:flex' ,
849+
850+ 'data-foo-[color:var(--value)]:flex' ,
851+ 'data-foo[color:var(--value)]:flex' ,
852+
853+ 'data-foo-[#0088cc]/50:flex' ,
854+ 'data-foo[#0088cc]/50:flex' ,
855+
856+ 'data-foo-[#0088cc]/[50%]:flex' ,
857+ 'data-foo[#0088cc]/[50%]:flex' ,
858+
859+ 'data-foo-[#0088cc]:flex!' ,
860+ 'data-foo[#0088cc]:flex!' ,
861+
862+ 'data-foo-[var(--value)]:flex' ,
863+ 'data-foo[var(--value)]:flex' ,
864+
865+ 'data-foo-[var(--value)]:flex!' ,
866+ 'data-foo[var(--value)]:flex!' ,
867+
868+ 'data-foo-(color:--value):flex' ,
869+ 'data-foo(color:--value):flex' ,
870+
871+ 'data-foo-(color:--value)/50:flex' ,
872+ 'data-foo(color:--value)/50:flex' ,
873+
874+ 'data-foo-(color:--value)/(--mod):flex' ,
875+ 'data-foo(color:--value)/(--mod):flex' ,
876+
877+ 'data-foo-(color:--value)/(number:--mod):flex' ,
878+ 'data-foo(color:--value)/(number:--mod):flex' ,
879+
880+ 'data-foo-(--value):flex' ,
881+ 'data-foo(--value):flex' ,
882+
883+ 'data-foo-(--value)/50:flex' ,
884+ 'data-foo(--value)/50:flex' ,
885+
886+ 'data-foo-(--value)/(--mod):flex' ,
887+ 'data-foo(--value)/(--mod):flex' ,
888+
889+ 'data-foo-(--value)/(number:--mod):flex' ,
890+ 'data-foo(--value)/(number:--mod):flex' ,
891+ ] ) {
892+ expect ( run ( candidate , { utilities, variants } ) ) . toEqual ( [ ] )
893+ }
894+ } )
895+
839896it ( 'should parse a utility with an implicit variable as the modifier' , ( ) => {
840897 let utilities = new Utilities ( )
841898 utilities . functional ( 'bg' , ( ) => [ ] )
@@ -966,6 +1023,18 @@ it('should parse a utility with an explicit variable as the modifier that is imp
9661023 ` )
9671024} )
9681025
1026+ it ( 'should not parse a partial variant' , ( ) => {
1027+ let utilities = new Utilities ( )
1028+ utilities . static ( 'flex' , ( ) => [ ] )
1029+
1030+ let variants = new Variants ( )
1031+ variants . static ( 'open' , ( ) => { } )
1032+ variants . functional ( 'data' , ( ) => { } )
1033+
1034+ expect ( run ( 'open-:flex' , { utilities, variants } ) ) . toMatchInlineSnapshot ( `[]` )
1035+ expect ( run ( 'data-:flex' , { utilities, variants } ) ) . toMatchInlineSnapshot ( `[]` )
1036+ } )
1037+
9691038it ( 'should parse a static variant starting with @' , ( ) => {
9701039 let utilities = new Utilities ( )
9711040 utilities . static ( 'flex' , ( ) => [ ] )
0 commit comments