Store span of function argument colon tokens
diff --git a/syntax/impls.rs b/syntax/impls.rs
index 8b0743b..7392d49 100644
--- a/syntax/impls.rs
+++ b/syntax/impls.rs
@@ -339,6 +339,7 @@
attrs: _,
visibility: _,
name: _,
+ colon_token: _,
ty,
} = arg;
let Var {
@@ -346,6 +347,7 @@
attrs: _,
visibility: _,
name: _,
+ colon_token: _,
ty: ty2,
} = arg2;
ty == ty2
@@ -374,6 +376,7 @@
attrs: _,
visibility: _,
name: _,
+ colon_token: _,
ty,
} = arg;
ty.hash(state);
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 3d56293..b2c524b 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -174,6 +174,7 @@
pub attrs: OtherAttrs,
pub visibility: Token![pub],
pub name: Pair,
+ pub colon_token: Token![:],
pub ty: Type,
}
diff --git a/syntax/parse.rs b/syntax/parse.rs
index d792076..fe18832 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -146,11 +146,13 @@
};
let visibility = visibility_pub(&field.vis, ident.span());
let name = pair(Namespace::default(), &ident, cxx_name, rust_name);
+ let colon_token = field.colon_token.unwrap();
fields.push(Var {
doc,
attrs,
visibility,
name,
+ colon_token,
ty,
});
}
@@ -583,11 +585,13 @@
let attrs = OtherAttrs::none();
let visibility = Token);
let name = pair(Namespace::default(), &ident, None, None);
+ let colon_token = arg.colon_token;
args.push_value(Var {
doc,
attrs,
visibility,
name,
+ colon_token,
ty,
});
if let Some(comma) = comma {
@@ -1267,15 +1271,21 @@
));
}
+ let fn_span = ty.fn_token.span;
+
let args = ty
.inputs
.iter()
.enumerate()
.map(|(i, arg)| {
let ty = parse_type(&arg.ty)?;
- let ident = match &arg.name {
- Some(ident) => ident.0.clone(),
- None => format_ident!("arg{}", i),
+ let (ident, colon_token) = match &arg.name {
+ Some((ident, colon_token)) => (ident.clone(), *colon_token),
+ None => {
+ let ident = format_ident!("arg{}", i, span = fn_span);
+ let colon_token = Token;
+ (ident, colon_token)
+ }
};
let doc = Doc::new();
let attrs = OtherAttrs::none();
@@ -1286,6 +1296,7 @@
attrs,
visibility,
name,
+ colon_token,
ty,
})
})
diff --git a/syntax/tokens.rs b/syntax/tokens.rs
index c1a06a2..a668aa6 100644
--- a/syntax/tokens.rs
+++ b/syntax/tokens.rs
@@ -43,6 +43,7 @@
attrs: _,
visibility: _,
name,
+ colon_token: _,
ty,
} = self;
name.rust.to_tokens(tokens);