aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/display/function_signature.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide/src/display/function_signature.rs')
-rw-r--r--crates/ra_ide/src/display/function_signature.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/crates/ra_ide/src/display/function_signature.rs b/crates/ra_ide/src/display/function_signature.rs
index f16d42276..9572debd8 100644
--- a/crates/ra_ide/src/display/function_signature.rs
+++ b/crates/ra_ide/src/display/function_signature.rs
@@ -84,8 +84,8 @@ impl FunctionSignature {
84 let ty = field.signature_ty(db); 84 let ty = field.signature_ty(db);
85 let raw_param = format!("{}", ty.display(db)); 85 let raw_param = format!("{}", ty.display(db));
86 86
87 if let Some(param_type) = raw_param.split(':').nth(1) { 87 if let Some(param_type) = raw_param.split(':').nth(1).and_then(|it| it.get(1..)) {
88 parameter_types.push(param_type[1..].to_string()); 88 parameter_types.push(param_type.to_string());
89 } else { 89 } else {
90 // useful when you have tuple struct 90 // useful when you have tuple struct
91 parameter_types.push(raw_param.clone()); 91 parameter_types.push(raw_param.clone());
@@ -129,8 +129,8 @@ impl FunctionSignature {
129 for field in variant.fields(db).into_iter() { 129 for field in variant.fields(db).into_iter() {
130 let ty = field.signature_ty(db); 130 let ty = field.signature_ty(db);
131 let raw_param = format!("{}", ty.display(db)); 131 let raw_param = format!("{}", ty.display(db));
132 if let Some(param_type) = raw_param.split(':').nth(1) { 132 if let Some(param_type) = raw_param.split(':').nth(1).and_then(|it| it.get(1..)) {
133 parameter_types.push(param_type[1..].to_string()); 133 parameter_types.push(param_type.to_string());
134 } else { 134 } else {
135 // The unwrap_or_else is useful when you have tuple 135 // The unwrap_or_else is useful when you have tuple
136 parameter_types.push(raw_param); 136 parameter_types.push(raw_param);
@@ -197,7 +197,12 @@ impl From<&'_ ast::FnDef> for FunctionSignature {
197 let raw_param = self_param.syntax().text().to_string(); 197 let raw_param = self_param.syntax().text().to_string();
198 198
199 res_types.push( 199 res_types.push(
200 raw_param.split(':').nth(1).unwrap_or_else(|| " Self")[1..].to_string(), 200 raw_param
201 .split(':')
202 .nth(1)
203 .and_then(|it| it.get(1..))
204 .unwrap_or_else(|| "Self")
205 .to_string(),
201 ); 206 );
202 res.push(raw_param); 207 res.push(raw_param);
203 } 208 }
@@ -205,8 +210,8 @@ impl From<&'_ ast::FnDef> for FunctionSignature {
205 res.extend(param_list.params().map(|param| param.syntax().text().to_string())); 210 res.extend(param_list.params().map(|param| param.syntax().text().to_string()));
206 res_types.extend(param_list.params().map(|param| { 211 res_types.extend(param_list.params().map(|param| {
207 let param_text = param.syntax().text().to_string(); 212 let param_text = param.syntax().text().to_string();
208 match param_text.split(':').nth(1) { 213 match param_text.split(':').nth(1).and_then(|it| it.get(1..)) {
209 Some(it) => it[1..].to_string(), 214 Some(it) => it.to_string(),
210 None => param_text, 215 None => param_text,
211 } 216 }
212 })); 217 }));