@@ -147,48 +147,17 @@ def concat_multi_lines(f):
147147 print_err (lineno , line , "Trailing backslash at the end of the file" )
148148
149149
150- def get_known_directive_names ():
151- def filter_line (line ):
152- line = line .strip ()
153- return line .startswith ('"' ) and (line .endswith ('",' ) or line .endswith ('"' ))
154-
155- # Equivalent to `src/tools/compiletest/src/header.rs` constant of the same name.
156- with open (
157- os .path .join (
158- # We go back to `src`.
159- os .path .dirname (os .path .dirname (__file__ )),
160- "tools/compiletest/src/directive-list.rs" ,
161- ),
162- "r" ,
163- encoding = "utf8" ,
164- ) as fd :
165- content = fd .read ()
166- return [
167- line .strip ().replace ('",' , "" ).replace ('"' , "" )
168- for line in content .split ("\n " )
169- if filter_line (line )
170- ]
171-
172-
173- # To prevent duplicating the list of commmands between `compiletest` and `htmldocck`, we put
174- # it into a common file which is included in rust code and parsed here.
175- # FIXME: This setup is temporary until we figure out how to improve this situation.
176- # See <https://github.com/rust-lang/rust/issues/125813#issuecomment-2141953780>.
177- KNOWN_DIRECTIVE_NAMES = get_known_directive_names ()
178-
179150LINE_PATTERN = re .compile (
180151 r"""
181152 //@\s+
182- (?P<negated>!?)(?P<cmd>[A-Za-z0-9]+(?:-[A-Za-z0-9]+)* )
183- (?P<args>.*)$
153+ (?P<negated>!?)(?P<cmd>.+? )
154+ (?:[\s:](? P<args>.*))? $
184155""" ,
185156 re .X | re .UNICODE ,
186157)
187158
188159DEPRECATED_LINE_PATTERN = re .compile (
189- r"""
190- //\s+@
191- """ ,
160+ r"//\s+@" ,
192161 re .X | re .UNICODE ,
193162)
194163
@@ -209,12 +178,7 @@ def get_commands(template):
209178
210179 cmd = m .group ("cmd" )
211180 negated = m .group ("negated" ) == "!"
212- if not negated and cmd in KNOWN_DIRECTIVE_NAMES :
213- continue
214- args = m .group ("args" )
215- if args and not args [:1 ].isspace ():
216- print_err (lineno , line , "Invalid template syntax" )
217- continue
181+ args = m .group ("args" ) or ""
218182 try :
219183 args = shlex .split (args )
220184 except UnicodeEncodeError :
@@ -636,14 +600,11 @@ def check_command(c, cache):
636600 else :
637601 raise InvalidCheck ("Invalid number of {} arguments" .format (c .cmd ))
638602
639- elif c .cmd == "valid-html" :
640- raise InvalidCheck ("Unimplemented valid-html" )
641-
642- elif c .cmd == "valid-links" :
643- raise InvalidCheck ("Unimplemented valid-links" )
644-
645603 else :
646- raise InvalidCheck ("Unrecognized {}" .format (c .cmd ))
604+ # Ignore unknown directives as they might be compiletest directives
605+ # since they share the same `//@` prefix by convention. In any case,
606+ # compiletest rejects unknown directives for us.
607+ return
647608
648609 if ret == c .negated :
649610 raise FailedCheck (cerr )
0 commit comments