summaryrefslogtreecommitdiff
path: root/cli/doc/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/doc/tests.rs')
-rw-r--r--cli/doc/tests.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/cli/doc/tests.rs b/cli/doc/tests.rs
index 12621c56d..8cc61195a 100644
--- a/cli/doc/tests.rs
+++ b/cli/doc/tests.rs
@@ -590,3 +590,49 @@ export namespace RootNs {
.contains("namespace RootNs")
);
}
+
+#[test]
+fn optional_return_type() {
+ let source_code = r#"
+ export function foo(a: number) {
+ return a;
+ }
+ "#;
+ let entries = DocParser::default()
+ .parse("test.ts".to_string(), source_code.to_string())
+ .unwrap();
+ assert_eq!(entries.len(), 1);
+ let entry = &entries[0];
+ let expected_json = json!({
+ "kind": "function",
+ "name": "foo",
+ "location": {
+ "filename": "test.ts",
+ "line": 2,
+ "col": 2
+ },
+ "jsDoc": null,
+ "functionDef": {
+ "params": [
+ {
+ "name": "a",
+ "tsType": {
+ "keyword": "number",
+ "kind": "keyword",
+ "repr": "number",
+ },
+ }
+ ],
+ "returnType": null,
+ "isAsync": false,
+ "isGenerator": false
+ }
+ });
+ let actual = serde_json::to_value(entry).unwrap();
+ assert_eq!(actual, expected_json);
+
+ assert!(
+ colors::strip_ansi_codes(super::printer::format(entries).as_str())
+ .contains("function foo(a: number)")
+ );
+}