@@ -12,10 +12,15 @@ use biome_parser::parse_recovery::ParseRecoveryTokenSet;
1212use biome_parser:: parsed_syntax:: ParsedSyntax :: { Absent , Present } ;
1313use biome_parser:: prelude:: * ;
1414
15- pub fn parse_vue_directive ( p : & mut HtmlParser ) -> ParsedSyntax {
15+ pub ( crate ) fn parse_vue_directive ( p : & mut HtmlParser ) -> ParsedSyntax {
16+ if !p. at ( HTML_LITERAL ) {
17+ return Absent ;
18+ }
19+
1620 let m = p. start ( ) ;
1721
18- p. bump_with_context ( HTML_LITERAL , HtmlLexContext :: InsideTagVue ) ;
22+ // FIXME: Ideally, the lexer would just lex VUE_IDENT directly
23+ p. bump_remap_with_context ( VUE_IDENT , HtmlLexContext :: InsideTagVue ) ;
1924 if p. at ( T ! [ : ] ) {
2025 parse_vue_directive_argument ( p) . ok ( ) ;
2126 }
@@ -27,7 +32,7 @@ pub fn parse_vue_directive(p: &mut HtmlParser) -> ParsedSyntax {
2732 Present ( m. complete ( p, VUE_DIRECTIVE ) )
2833}
2934
30- pub fn parse_vue_v_bind_shorthand_directive ( p : & mut HtmlParser ) -> ParsedSyntax {
35+ pub ( crate ) fn parse_vue_v_bind_shorthand_directive ( p : & mut HtmlParser ) -> ParsedSyntax {
3136 if !p. at ( T ! [ : ] ) {
3237 return Absent ;
3338 }
@@ -49,7 +54,7 @@ pub fn parse_vue_v_bind_shorthand_directive(p: &mut HtmlParser) -> ParsedSyntax
4954 Present ( m. complete ( p, VUE_V_BIND_SHORTHAND_DIRECTIVE ) )
5055}
5156
52- pub fn parse_vue_v_on_shorthand_directive ( p : & mut HtmlParser ) -> ParsedSyntax {
57+ pub ( crate ) fn parse_vue_v_on_shorthand_directive ( p : & mut HtmlParser ) -> ParsedSyntax {
5358 if !p. at ( T ! [ @] ) {
5459 return Absent ;
5560 }
@@ -98,7 +103,7 @@ fn parse_vue_dynamic_argument(p: &mut HtmlParser) -> ParsedSyntax {
98103
99104 let m = p. start ( ) ;
100105
101- p. expect_with_context ( T ! [ '[' ] , HtmlLexContext :: InsideTagVue ) ;
106+ p. bump_with_context ( T ! [ '[' ] , HtmlLexContext :: InsideTagVue ) ;
102107 p. expect_with_context ( HTML_LITERAL , HtmlLexContext :: InsideTagVue ) ;
103108 p. expect_with_context ( T ! [ ']' ] , HtmlLexContext :: InsideTagVue ) ;
104109
@@ -117,7 +122,7 @@ impl ParseNodeList for VueModifierList {
117122 }
118123
119124 fn is_at_list_end ( & self , p : & mut Self :: Parser < ' _ > ) -> bool {
120- p. at ( T ! [ =] )
125+ p. at ( T ! [ =] ) || p . at ( T ! [ > ] ) || p . at ( T ! [ / ] ) || p . at ( T ! [ '}' ] )
121126 }
122127
123128 fn recover (
@@ -127,7 +132,10 @@ impl ParseNodeList for VueModifierList {
127132 ) -> biome_parser:: parse_recovery:: RecoveryResult {
128133 parsed_element. or_recover_with_token_set (
129134 p,
130- & ParseRecoveryTokenSet :: new ( VUE_BOGUS_DIRECTIVE , token_set ! [ T ![ . ] , T ![ >] ] ) ,
135+ & ParseRecoveryTokenSet :: new (
136+ VUE_BOGUS_DIRECTIVE ,
137+ token_set ! [ T ![ . ] , T ![ >] , T ![ /] , T ![ '}' ] ] ,
138+ ) ,
131139 expected_attribute,
132140 )
133141 }
0 commit comments