mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
fix(doc): stack overflow for .d.ts files (#7167)
This commit is contained in:
parent
c1558beffb
commit
2600d5ac09
6 changed files with 33 additions and 2 deletions
10
cli/main.rs
10
cli/main.rs
|
@ -545,16 +545,22 @@ async fn doc_command(
|
|||
|
||||
let loader = Box::new(global_state.file_fetcher.clone());
|
||||
let doc_parser = doc::DocParser::new(loader, private);
|
||||
let media_type = map_file_extension(&PathBuf::from(&source_file));
|
||||
let syntax = swc_util::get_syntax_for_media_type(media_type);
|
||||
|
||||
let parse_result = if source_file == "--builtin" {
|
||||
let syntax = swc_util::get_syntax_for_dts();
|
||||
doc_parser.parse_source(
|
||||
"lib.deno.d.ts",
|
||||
syntax,
|
||||
get_types(flags.unstable).as_str(),
|
||||
)
|
||||
} else {
|
||||
let path = PathBuf::from(&source_file);
|
||||
let syntax = if path.ends_with("d.ts") {
|
||||
swc_util::get_syntax_for_dts()
|
||||
} else {
|
||||
let media_type = map_file_extension(&path);
|
||||
swc_util::get_syntax_for_media_type(media_type)
|
||||
};
|
||||
let module_specifier =
|
||||
ModuleSpecifier::resolve_url_or_path(&source_file).unwrap();
|
||||
doc_parser
|
||||
|
|
|
@ -80,6 +80,12 @@ fn get_default_ts_config() -> TsConfig {
|
|||
ts_config
|
||||
}
|
||||
|
||||
pub fn get_syntax_for_dts() -> Syntax {
|
||||
let mut ts_config = TsConfig::default();
|
||||
ts_config.dts = true;
|
||||
Syntax::Typescript(ts_config)
|
||||
}
|
||||
|
||||
pub fn get_syntax_for_media_type(media_type: MediaType) -> Syntax {
|
||||
match media_type {
|
||||
MediaType::JavaScript => Syntax::Es(get_default_es_config()),
|
||||
|
|
2
cli/tests/deno_doc.out
Normal file
2
cli/tests/deno_doc.out
Normal file
|
@ -0,0 +1,2 @@
|
|||
[WILDCARD]
|
||||
function foo[WILDCARD]
|
4
cli/tests/deno_doc.ts
Normal file
4
cli/tests/deno_doc.ts
Normal file
|
@ -0,0 +1,4 @@
|
|||
/** Some JSDoc */
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
||||
export function foo() {
|
||||
}
|
3
cli/tests/deno_doc_builtin.out
Normal file
3
cli/tests/deno_doc_builtin.out
Normal file
|
@ -0,0 +1,3 @@
|
|||
[WILDCARD]
|
||||
namespace Deno
|
||||
[WILDCARD]
|
|
@ -2262,6 +2262,16 @@ itest!(deno_lint_glob {
|
|||
exit_code: 1,
|
||||
});
|
||||
|
||||
itest!(deno_doc_builtin {
|
||||
args: "doc",
|
||||
output: "deno_doc_builtin.out",
|
||||
});
|
||||
|
||||
itest!(deno_doc {
|
||||
args: "doc deno_doc.ts",
|
||||
output: "deno_doc.out",
|
||||
});
|
||||
|
||||
itest!(compiler_js_error {
|
||||
args: "run --unstable compiler_js_error.ts",
|
||||
output: "compiler_js_error.ts.out",
|
||||
|
|
Loading…
Add table
Reference in a new issue