feat: [ts] add extend support

上级 cf41c74d
......@@ -57,6 +57,20 @@ func Test_TypeScriptMultipleClass(t *testing.T) {
g.Expect(results[3].Class).To(Equal("default"))
}
func Test_TypeScriptAbstractClass(t *testing.T) {
g := NewGomegaWithT(t)
app := new(TypeScriptApiApp)
code, _ := ioutil.ReadFile("../../../../_fixtures/ts/AbstractClass.ts")
results := app.Analysis(string(code))
g.Expect(len(results)).To(Equal(3))
g.Expect(results[0].Type).To(Equal("Class"))
g.Expect(results[1].Class).To(Equal("Employee"))
g.Expect(results[1].Extend).To(Equal("Person"))
}
func Test_ShouldGetClassFromModule(t *testing.T) {
g := NewGomegaWithT(t)
......
......@@ -71,10 +71,6 @@ func BuildInterfaceTypeBody(ctx *parser.TypeMemberListContext, classNode *domain
methodSignature := memberChild.(*parser.MethodSignatureContext)
method := domain.NewJMethod()
method.Name = methodSignature.PropertyName().GetText()
if typeMemberCtx.Type_() != nil {
// todo need a case ?
method.Type = typeMemberCtx.Type_().GetText()
}
FillMethodFromCallSignature(methodSignature.CallSignature().(*parser.CallSignatureContext), &method)
classNode.Methods = append(classNode.Methods, method)
......@@ -124,6 +120,11 @@ func (s *TypeScriptIdentListener) EnterClassDeclaration(ctx *parser.ClassDeclara
currentNode.Implements = append(currentNode.Implements, BuildImplements(typeList)...)
}
if heritageContext.ClassExtendsClause() != nil {
referenceContext := heritageContext.ClassExtendsClause().(*parser.ClassExtendsClauseContext).TypeReference().(*parser.TypeReferenceContext)
currentNode.Extend = referenceContext.TypeName().GetText()
}
for _, classElement := range ctx.ClassTail().(*parser.ClassTailContext).AllClassElement() {
elementChild := classElement.GetChild(0)
if reflect.TypeOf(elementChild).String() == "*parser.ConstructorDeclarationContext" {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册