@@ -517,6 +517,10 @@ let rec consume_remnants_bad_url = lexbuf =>
517517
518518// https://drafts.csswg.org/css-syntax-3/#consume-url-token
519519let consume_url = lexbuf => {
520+ let raise_bad_url = error => {
521+ let (start_pos , curr_pos ) = Sedlexing . lexing_positions(lexbuf);
522+ raise (LexingError ((start_pos, curr_pos, Tokens . show_error(error))));
523+ };
520524 let _ = consume_whitespace(lexbuf);
521525 let rec read = acc => {
522526 let when_whitespace = () => {
@@ -526,7 +530,7 @@ let consume_url = lexbuf => {
526530 | eof => Error ((Tokens . URL (acc), Tokens . Eof ))
527531 | _ =>
528532 consume_remnants_bad_url(lexbuf);
529- Ok (Tokens . BAD_URL );
533+ raise_bad_url (Tokens . Invalid_code_point );
530534 };
531535 };
532536 switch %sedlex (lexbuf) {
@@ -538,12 +542,11 @@ let consume_url = lexbuf => {
538542 | '('
539543 | non_printable_code_point =>
540544 consume_remnants_bad_url(lexbuf);
541- // TODO: location on error
542- Error ((Tokens . BAD_URL , Tokens . Invalid_code_point ));
545+ raise_bad_url(Tokens . Invalid_code_point );
543546 | escape =>
544547 switch (consume_escaped(lexbuf)) {
545548 | Ok (char ) => read(acc ++ char)
546- | Error ((_ , error )) => Error (( Tokens . BAD_URL , error) )
549+ | Error ((_ , error )) => raise_bad_url( error)
547550 }
548551 | any => read(acc ++ lexeme(lexbuf))
549552 | _ => unreachable(lexbuf)
@@ -738,6 +741,10 @@ let consume_number = lexbuf => {
738741
739742// https://drafts.csswg.org/css-syntax-3/#consume-url-token
740743let consume_url_ = lexbuf => {
744+ let raise_bad_url = error => {
745+ let (start_pos , curr_pos ) = Sedlexing . lexing_positions(lexbuf);
746+ raise (LexingError ((start_pos, curr_pos, Tokens . show_error(error))));
747+ };
741748 let _ = consume_whitespace_(lexbuf);
742749 let rec read = acc => {
743750 let when_whitespace = () => {
@@ -747,7 +754,7 @@ let consume_url_ = lexbuf => {
747754 | eof => Error ((Tokens . URL (acc), Tokens . Eof ))
748755 | _ =>
749756 consume_remnants_bad_url(lexbuf);
750- Ok ( BAD_URL );
757+ raise_bad_url( Tokens . Invalid_code_point );
751758 };
752759 };
753760 switch %sedlex (lexbuf) {
@@ -759,12 +766,11 @@ let consume_url_ = lexbuf => {
759766 | '('
760767 | non_printable_code_point =>
761768 consume_remnants_bad_url(lexbuf);
762- // TODO: location on error
763- Error ((BAD_URL , Tokens . Invalid_code_point ));
769+ raise_bad_url(Tokens . Invalid_code_point );
764770 | escape =>
765771 switch (consume_escaped(lexbuf)) {
766772 | Ok (char ) => read(acc ++ char)
767- | Error ((_ , error )) => Error (( BAD_URL , error) )
773+ | Error ((_ , error )) => raise_bad_url( error)
768774 }
769775 | any => read(acc ++ lexeme(lexbuf))
770776 | _ => unreachable(lexbuf)
0 commit comments