0
0
Fork 0
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:
Bartek Iwańczuk 2020-08-23 15:48:35 +02:00 committed by GitHub
parent c1558beffb
commit 2600d5ac09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 33 additions and 2 deletions

View file

@ -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

View file

@ -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
View file

@ -0,0 +1,2 @@
[WILDCARD]
function foo[WILDCARD]

4
cli/tests/deno_doc.ts Normal file
View file

@ -0,0 +1,4 @@
/** Some JSDoc */
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
export function foo() {
}

View file

@ -0,0 +1,3 @@
[WILDCARD]
namespace Deno
[WILDCARD]

View file

@ -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",