Skip to content

Commit 61e5368

Browse files
committed
Represent symbol value as enum to prepare for supporting env vars
1 parent 399d5a8 commit 61e5368

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

compiler/rustc_macros/src/symbols.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,20 @@ impl Parse for Keyword {
5353

5454
struct Symbol {
5555
name: Ident,
56-
value: Option<LitStr>,
56+
value: Value,
57+
}
58+
59+
enum Value {
60+
SameAsName,
61+
String(LitStr),
5762
}
5863

5964
impl Parse for Symbol {
6065
fn parse(input: ParseStream<'_>) -> Result<Self> {
6166
let name = input.parse()?;
6267
let colon_token: Option<Token![:]> = input.parse()?;
63-
let value = if colon_token.is_some() { Some(input.parse()?) } else { None };
68+
let value =
69+
if colon_token.is_some() { Value::String(input.parse()?) } else { Value::SameAsName };
6470

6571
Ok(Symbol { name, value })
6672
}
@@ -168,8 +174,8 @@ fn symbols_with_errors(input: TokenStream) -> (TokenStream, Vec<syn::Error>) {
168174
for symbol in input.symbols.iter() {
169175
let name = &symbol.name;
170176
let value = match &symbol.value {
171-
Some(value) => value.value(),
172-
None => name.to_string(),
177+
Value::SameAsName => name.to_string(),
178+
Value::String(lit) => lit.value(),
173179
};
174180
check_dup(symbol.name.span(), &value, &mut errors);
175181
check_order(symbol.name.span(), &name.to_string(), &mut errors);

0 commit comments

Comments
 (0)