@@ -39,10 +39,26 @@ pub trait NameDirective {
3939 fn parse_name_negative ( & self , comment : & TestComment < ' _ > ) -> bool ;
4040}
4141
42+ pub trait TestDirective {
43+ fn compiletest_name ( & self ) -> & ' static str ;
44+ fn ui_test_name ( & self ) -> Option < & ' static str > ;
45+ }
46+
4247macro_rules! name_value_directive {
4348 ( $item: ident, $compiletest_name: literal) => {
4449 #[ derive( Debug , Clone , Copy ) ]
4550 pub struct $item;
51+
52+ impl TestDirective for $item {
53+ fn compiletest_name( & self ) -> & ' static str {
54+ $compiletest_name
55+ }
56+
57+ fn ui_test_name( & self ) -> Option <& ' static str > {
58+ None
59+ }
60+ }
61+
4662 impl NameValueDirective for $item {
4763 fn parse_name_value<' line>(
4864 & self ,
@@ -68,6 +84,17 @@ macro_rules! name_value_directive {
6884 ( $item: ident, $compiletest_name: literal, $ui_test_name: literal) => {
6985 #[ derive( Debug , Clone , Copy ) ]
7086 pub struct $item;
87+
88+ impl TestDirective for $item {
89+ fn compiletest_name( & self ) -> & ' static str {
90+ $compiletest_name
91+ }
92+
93+ fn ui_test_name( & self ) -> Option <& ' static str > {
94+ Some ( $ui_test_name)
95+ }
96+ }
97+
7198 impl NameValueDirective for $item {
7299 fn parse_name_value<' line>(
73100 & self ,
@@ -106,6 +133,17 @@ macro_rules! name_directive {
106133 ( $item: ident, $compiletest_name: literal) => {
107134 #[ derive( Debug , Clone , Copy ) ]
108135 pub struct $item;
136+
137+ impl TestDirective for $item {
138+ fn compiletest_name( & self ) -> & ' static str {
139+ $compiletest_name
140+ }
141+
142+ fn ui_test_name( & self ) -> Option <& ' static str > {
143+ None
144+ }
145+ }
146+
109147 impl NameDirective for $item {
110148 fn parse_name( & self , comment: & TestComment <' _>) -> bool {
111149 match comment. comment( ) {
@@ -134,6 +172,17 @@ macro_rules! name_directive {
134172 ( $item: ident, $compiletest_name: literal, $ui_test_name: literal) => {
135173 #[ derive( Debug , Clone , Copy ) ]
136174 pub struct $item;
175+
176+ impl TestDirective for $item {
177+ fn compiletest_name( & self ) -> & ' static str {
178+ $compiletest_name
179+ }
180+
181+ fn ui_test_name( & self ) -> Option <& ' static str > {
182+ Some ( $ui_test_name)
183+ }
184+ }
185+
137186 impl NameDirective for $item {
138187 fn parse_name( & self , comment: & TestComment <' _>) -> bool {
139188 match comment. comment( ) {
@@ -173,6 +222,17 @@ macro_rules! name_val_or_name_directive {
173222 ( $item: ident, $compiletest_name: literal) => {
174223 #[ derive( Debug , Clone , Copy ) ]
175224 pub struct $item;
225+
226+ impl TestDirective for $item {
227+ fn compiletest_name( & self ) -> & ' static str {
228+ $compiletest_name
229+ }
230+
231+ fn ui_test_name( & self ) -> Option <& ' static str > {
232+ None
233+ }
234+ }
235+
176236 impl NameValueDirective for $item {
177237 fn parse_name_value<' line>(
178238 & self ,
@@ -222,6 +282,17 @@ macro_rules! name_val_or_name_directive {
222282 ( $item: ident, $compiletest_name: literal, $ui_test_name: literal) => {
223283 #[ derive( Debug , Clone , Copy ) ]
224284 pub struct $item;
285+
286+ impl TestDirective for $item {
287+ fn compiletest_name( & self ) -> & ' static str {
288+ $compiletest_name
289+ }
290+
291+ fn ui_test_name( & self ) -> Option <& ' static str > {
292+ Some ( $ui_test_name)
293+ }
294+ }
295+
225296 impl NameValueDirective for $item {
226297 fn parse_name_value<' line>(
227298 & self ,
@@ -292,7 +363,7 @@ macro_rules! name_val_or_name_directive {
292363// Macros are in the form (name, compiletest_name, ui_test_name).
293364// If ui_test_name does not exist, ui_test does not support that directive.
294365// ========================================================================
295- name_value_directive ! ( ErrorPatternDirective , "error-pattern " , "error-in-other-file " ) ;
366+ name_value_directive ! ( ErrorPatternDirective , "error-in-other-file " , "error-pattern " ) ;
296367name_value_directive ! ( CompileFlagsDirective , "compile-flags" , "compile-flags" ) ;
297368name_value_directive ! ( RunFlagsDirective , "run-flags" ) ; // UNUSED IN UI TESTS
298369name_value_directive ! ( PrettyModeDirective , "pretty-mode" ) ; // UNUSED IN UI TESTS
0 commit comments