]> git.lizzy.rs Git - rust.git/commitdiff
Allow declaring a DepNode as eval_always
authorWesley Wiser <wwiser@gmail.com>
Mon, 23 Oct 2017 22:07:21 +0000 (18:07 -0400)
committerWesley Wiser <wwiser@gmail.com>
Thu, 26 Oct 2017 22:47:46 +0000 (18:47 -0400)
Part of #45238

src/librustc/dep_graph/dep_node.rs

index 6993ef3768a7900a8cdfb6e706ad6cb143e4b35a..b9657400fd27d53f8b9b376023b7de268852be9c 100644 (file)
@@ -90,6 +90,11 @@ macro_rules! is_input_attr {
     ($attr:ident) => (false);
 }
 
+macro_rules! is_eval_always_attr {
+    (eval_always) => (true);
+    ($attr:ident) => (false);
+}
+
 macro_rules! contains_anon_attr {
     ($($attr:ident),*) => ({$(is_anon_attr!($attr) | )* false});
 }
@@ -98,6 +103,10 @@ macro_rules! contains_input_attr {
     ($($attr:ident),*) => ({$(is_input_attr!($attr) | )* false});
 }
 
+macro_rules! contains_eval_always_attr {
+    ($($attr:ident),*) => ({$(is_eval_always_attr!($attr) | )* false});
+}
+
 macro_rules! define_dep_nodes {
     (<$tcx:tt>
     $(
@@ -160,6 +169,15 @@ pub fn is_input(&self) -> bool {
                 }
             }
 
+            #[inline]
+            pub fn is_eval_always(&self) -> bool {
+                match *self {
+                    $(
+                        DepKind :: $variant => { contains_eval_always_attr!($($attr), *) }
+                    )*
+                }
+            }
+
             #[allow(unreachable_code)]
             #[inline]
             pub fn has_params(&self) -> bool {