enhance the signature help (#6606)
update with test Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
@ -533,14 +533,18 @@ pub trait StdLibFn: std::fmt::Debug + Send + Sync {
|
||||
|
||||
SignatureHelp {
|
||||
signatures: vec![SignatureInformation {
|
||||
label: self.name(),
|
||||
label: self.fn_signature(true),
|
||||
documentation: Some(Documentation::MarkupContent(MarkupContent {
|
||||
kind: MarkupKind::Markdown,
|
||||
value: if !self.description().is_empty() {
|
||||
format!("{}\n\n{}", self.summary(), self.description())
|
||||
} else {
|
||||
self.summary()
|
||||
},
|
||||
value: format!(
|
||||
r#"{}
|
||||
|
||||
{}"#,
|
||||
self.summary(),
|
||||
self.description()
|
||||
)
|
||||
.trim()
|
||||
.to_string(),
|
||||
})),
|
||||
parameters: Some(self.args(true).into_iter().map(|arg| arg.into()).collect()),
|
||||
active_parameter,
|
||||
@ -1116,4 +1120,21 @@ mod tests {
|
||||
let kcl_std = crate::docs::kcl_doc::walk_prelude();
|
||||
crate::lsp::kcl::get_signatures_from_stdlib(&stdlib, &kcl_std);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_extrude_signature_help() {
|
||||
let extrude_fn: Box<dyn StdLibFn> = Box::new(crate::std::extrude::Extrude);
|
||||
let sh = extrude_fn.to_signature_help();
|
||||
assert_eq!(
|
||||
sh.signatures[0].label,
|
||||
r#"extrude(
|
||||
sketches: [Sketch],
|
||||
length: number,
|
||||
symmetric?: bool,
|
||||
bidirectionalLength?: number,
|
||||
tagStart?: TagNode,
|
||||
tagEnd?: TagNode,
|
||||
): [Solid]"#
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1113,7 +1113,13 @@ async fn test_kcl_lsp_signature_help() {
|
||||
"Expected one signature, got {:?}",
|
||||
signature_help.signatures
|
||||
);
|
||||
assert_eq!(signature_help.signatures[0].label, "startSketchOn");
|
||||
assert_eq!(
|
||||
signature_help.signatures[0].label,
|
||||
r#"startSketchOn(
|
||||
planeOrSolid: SketchData,
|
||||
face?: FaceTag,
|
||||
): SketchSurface"#
|
||||
);
|
||||
} else {
|
||||
panic!("Expected signature help");
|
||||
}
|
||||
@ -1196,7 +1202,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
||||
"Expected one signature, got {:?}",
|
||||
signature_help.signatures
|
||||
);
|
||||
assert_eq!(signature_help.signatures[0].label, "extrude");
|
||||
assert_eq!(
|
||||
signature_help.signatures[0].label,
|
||||
r#"extrude(
|
||||
sketches: [Sketch],
|
||||
length: number,
|
||||
symmetric?: bool,
|
||||
bidirectionalLength?: number,
|
||||
tagStart?: TagNode,
|
||||
tagEnd?: TagNode,
|
||||
): [Solid]"#
|
||||
);
|
||||
} else {
|
||||
panic!("Expected signature help");
|
||||
}
|
||||
@ -1284,7 +1300,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
||||
"Expected one signature, got {:?}",
|
||||
signature_help.signatures
|
||||
);
|
||||
assert_eq!(signature_help.signatures[0].label, "extrude");
|
||||
assert_eq!(
|
||||
signature_help.signatures[0].label,
|
||||
r#"extrude(
|
||||
sketches: [Sketch],
|
||||
length: number,
|
||||
symmetric?: bool,
|
||||
bidirectionalLength?: number,
|
||||
tagStart?: TagNode,
|
||||
tagEnd?: TagNode,
|
||||
): [Solid]"#
|
||||
);
|
||||
} else {
|
||||
panic!("Expected signature help");
|
||||
}
|
||||
@ -1367,7 +1393,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
||||
"Expected one signature, got {:?}",
|
||||
signature_help.signatures
|
||||
);
|
||||
assert_eq!(signature_help.signatures[0].label, "extrude");
|
||||
assert_eq!(
|
||||
signature_help.signatures[0].label,
|
||||
r#"extrude(
|
||||
sketches: [Sketch],
|
||||
length: number,
|
||||
symmetric?: bool,
|
||||
bidirectionalLength?: number,
|
||||
tagStart?: TagNode,
|
||||
tagEnd?: TagNode,
|
||||
): [Solid]"#
|
||||
);
|
||||
} else {
|
||||
panic!("Expected signature help");
|
||||
}
|
||||
@ -1455,7 +1491,17 @@ a1 = startSketchOn(offsetPlane(XY, offset = 10))
|
||||
"Expected one signature, got {:?}",
|
||||
signature_help.signatures
|
||||
);
|
||||
assert_eq!(signature_help.signatures[0].label, "extrude");
|
||||
assert_eq!(
|
||||
signature_help.signatures[0].label,
|
||||
r#"extrude(
|
||||
sketches: [Sketch],
|
||||
length: number,
|
||||
symmetric?: bool,
|
||||
bidirectionalLength?: number,
|
||||
tagStart?: TagNode,
|
||||
tagEnd?: TagNode,
|
||||
): [Solid]"#
|
||||
);
|
||||
} else {
|
||||
panic!("Expected signature help");
|
||||
}
|
||||
|
Reference in New Issue
Block a user