@@ -146,53 +146,21 @@ def concat_multi_lines(f):
146146 if lastline is not None :
147147 print_err (lineno , line , "Trailing backslash at the end of the file" )
148148
149-
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-
179149LINE_PATTERN = re .compile (
180150 r"""
181151 //@\s+
182- (?P<negated>!?)(?P<cmd>[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*)
152+ (?P<negated>!?)(?P<cmd>.+?)
153+ [\s:]
183154 (?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
195-
196164def get_commands (template ):
197165 with io .open (template , encoding = "utf-8" ) as f :
198166 for lineno , line in concat_multi_lines (f ):
@@ -209,12 +177,7 @@ def get_commands(template):
209177
210178 cmd = m .group ("cmd" )
211179 negated = m .group ("negated" ) == "!"
212- if not negated and cmd in KNOWN_DIRECTIVE_NAMES :
213- continue
214180 args = m .group ("args" )
215- if args and not args [:1 ].isspace ():
216- print_err (lineno , line , "Invalid template syntax" )
217- continue
218181 try :
219182 args = shlex .split (args )
220183 except UnicodeEncodeError :
@@ -632,14 +595,10 @@ def check_command(c, cache):
632595 else :
633596 raise InvalidCheck ("Invalid number of {} arguments" .format (c .cmd ))
634597
635- elif c .cmd == "valid-html" :
636- raise InvalidCheck ("Unimplemented valid-html" )
637-
638- elif c .cmd == "valid-links" :
639- raise InvalidCheck ("Unimplemented valid-links" )
640-
641598 else :
642- raise InvalidCheck ("Unrecognized {}" .format (c .cmd ))
599+ # Ignore unknown directives, they might be compiletest directives.
600+ # In any case, compiletest rejects unknown directives for us.
601+ return
643602
644603 if ret == c .negated :
645604 raise FailedCheck (cerr )
0 commit comments