about summary refs log tree commit diff
path: root/compiler/rustc_macros/src
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2023-10-25 11:12:32 -0700
committerDavid Tolnay <dtolnay@gmail.com>2023-10-26 01:57:07 -0700
commitba17934bc1f6fce2e4f9e5494efdb90508eafecd (patch)
treec3ab8a90500b2dc682d1f7087d30d3d1ee40cb6b /compiler/rustc_macros/src
parent173dcb211a08352900b29968cded2024aee6166d (diff)
downloadrust-ba17934bc1f6fce2e4f9e5494efdb90508eafecd.tar.gz
rust-ba17934bc1f6fce2e4f9e5494efdb90508eafecd.zip
Represent symbol value as enum to prepare for supporting env vars
Diffstat (limited to 'compiler/rustc_macros/src')
-rw-r--r--compiler/rustc_macros/src/symbols.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/rustc_macros/src/symbols.rs b/compiler/rustc_macros/src/symbols.rs
index 46ae1779bbe..4df7eb63104 100644
--- a/compiler/rustc_macros/src/symbols.rs
+++ b/compiler/rustc_macros/src/symbols.rs
@@ -53,14 +53,20 @@ impl Parse for Keyword {
 
 struct Symbol {
     name: Ident,
-    value: Option<LitStr>,
+    value: Value,
+}
+
+enum Value {
+    SameAsName,
+    String(LitStr),
 }
 
 impl Parse for Symbol {
     fn parse(input: ParseStream<'_>) -> Result<Self> {
         let name = input.parse()?;
         let colon_token: Option<Token![:]> = input.parse()?;
-        let value = if colon_token.is_some() { Some(input.parse()?) } else { None };
+        let value =
+            if colon_token.is_some() { Value::String(input.parse()?) } else { Value::SameAsName };
 
         Ok(Symbol { name, value })
     }
@@ -168,8 +174,8 @@ fn symbols_with_errors(input: TokenStream) -> (TokenStream, Vec<syn::Error>) {
     for symbol in input.symbols.iter() {
         let name = &symbol.name;
         let value = match &symbol.value {
-            Some(value) => value.value(),
-            None => name.to_string(),
+            Value::SameAsName => name.to_string(),
+            Value::String(lit) => lit.value(),
         };
         check_dup(symbol.name.span(), &value, &mut errors);
         check_order(symbol.name.span(), &name.to_string(), &mut errors);