fix: fix default not class issues

上级 03d4f5a6
package js_ident package js_ident
import ( import (
"fmt"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
"io/ioutil" "io/ioutil"
"testing" "testing"
...@@ -53,4 +52,4 @@ func Test_TypeScriptMultipleClass(t *testing.T) { ...@@ -53,4 +52,4 @@ func Test_TypeScriptMultipleClass(t *testing.T) {
g.Expect(len(results)).To(Equal(2)) g.Expect(len(results)).To(Equal(2))
g.Expect(results[0].Implements[0]).To(Equal("IPerson")) g.Expect(results[0].Implements[0]).To(Equal("IPerson"))
} }
\ No newline at end of file
...@@ -10,11 +10,14 @@ var currentNode *domain.JClassNode ...@@ -10,11 +10,14 @@ var currentNode *domain.JClassNode
var classNodeQueue []domain.JClassNode var classNodeQueue []domain.JClassNode
var classNodes []domain.JClassNode var classNodes []domain.JClassNode
var default_class = "default"
type TypeScriptIdentListener struct { type TypeScriptIdentListener struct {
parser.BaseTypeScriptParserListener parser.BaseTypeScriptParserListener
} }
func NewTypeScriptIdentListener() *TypeScriptIdentListener { func NewTypeScriptIdentListener() *TypeScriptIdentListener {
classNodes = nil
currentNode = domain.NewClassNode() currentNode = domain.NewClassNode()
return &TypeScriptIdentListener{} return &TypeScriptIdentListener{}
} }
...@@ -55,6 +58,10 @@ func (s *TypeScriptIdentListener) ExitClassDeclaration(ctx *parser.ClassDeclarat ...@@ -55,6 +58,10 @@ func (s *TypeScriptIdentListener) ExitClassDeclaration(ctx *parser.ClassDeclarat
} }
func (s *TypeScriptIdentListener) EnterArgumentsExpression(ctx *parser.ArgumentsExpressionContext) { func (s *TypeScriptIdentListener) EnterArgumentsExpression(ctx *parser.ArgumentsExpressionContext) {
if currentNode.Class == "" {
currentNode.Class = default_class
}
if reflect.TypeOf(ctx.GetChild(0)).String() == "*parser.MemberDotExpressionContext" { if reflect.TypeOf(ctx.GetChild(0)).String() == "*parser.MemberDotExpressionContext" {
memberDotExprCtx := ctx.GetChild(0).(*parser.MemberDotExpressionContext) memberDotExprCtx := ctx.GetChild(0).(*parser.MemberDotExpressionContext)
buildMemberDotExpr(memberDotExprCtx) buildMemberDotExpr(memberDotExprCtx)
...@@ -74,5 +81,9 @@ func (s *TypeScriptIdentListener) EnterMemberDotExpression(ctx *parser.MemberDot ...@@ -74,5 +81,9 @@ func (s *TypeScriptIdentListener) EnterMemberDotExpression(ctx *parser.MemberDot
} }
func (s *TypeScriptIdentListener) GetNodeInfo() []domain.JClassNode { func (s *TypeScriptIdentListener) GetNodeInfo() []domain.JClassNode {
if currentNode.Class == default_class {
classNodes = append(classNodes, *currentNode)
currentNode = domain.NewClassNode()
}
return classNodes return classNodes
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册