From 6204555be3feaf5171dfb1bba15203ef2bb33265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=BD=C3=A1ra?= Date: Fri, 3 Apr 2020 14:11:50 +0200 Subject: "deno doc" parses the "implements" clause of a class def (#4604) --- cli/doc/class.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'cli/doc/class.rs') diff --git a/cli/doc/class.rs b/cli/doc/class.rs index ddbefa55c..cdb7f5ee0 100644 --- a/cli/doc/class.rs +++ b/cli/doc/class.rs @@ -8,6 +8,7 @@ use swc_ecma_ast; use super::function::function_to_function_def; use super::function::FunctionDef; use super::parser::DocParser; +use super::ts_type::ts_entity_name_to_name; use super::ts_type::ts_type_ann_to_def; use super::ts_type::TsTypeDef; use super::Location; @@ -54,13 +55,13 @@ pub struct ClassMethodDef { #[derive(Debug, Serialize, Clone)] #[serde(rename_all = "camelCase")] pub struct ClassDef { - // TODO: decorators, super_class, implements, - // type_params, super_type_params + // TODO: decorators, type_params, super_type_params pub is_abstract: bool, pub constructors: Vec, pub properties: Vec, pub methods: Vec, pub super_class: Option, + pub implements: Vec, } fn prop_name_to_string( @@ -98,6 +99,13 @@ pub fn get_doc_for_class_decl( None => None, }; + let implements: Vec = class_decl + .class + .implements + .iter() + .map(|expr| ts_entity_name_to_name(&expr.expr)) + .collect(); + for member in &class_decl.class.body { use swc_ecma_ast::ClassMember::*; @@ -212,6 +220,7 @@ pub fn get_doc_for_class_decl( let class_def = ClassDef { is_abstract: class_decl.class.is_abstract, super_class, + implements, constructors, properties, methods, -- cgit v1.2.3