fix: fix class node queue issue

上级 7185b9c6
package com.phodal.coca.abug;
public class ClassOne extends HasStatic {
static final int x = 3;
static int y = 4;
public static void pr() {
}
}
public class ClassTwo {
final int z=10;
public static void main(String[] args) {
Outer outer = new Outer();
System.out.println(outer.new Inner().y);
}
}
\ No newline at end of file
......@@ -243,3 +243,16 @@ func Test_InnerClass(t *testing.T) {
g.Expect(callNodes[0].Class).To(Equal("Outer"))
g.Expect(callNodes[0].InnerClass[0].Class).To(Equal("Inner"))
}
func Test_DoubleClass(t *testing.T) {
g := NewGomegaWithT(t)
codePath := "../../../_fixtures/abug/DoubleClass.java"
codePath = filepath.FromSlash(codePath)
callNodes := getCallNodes(codePath)
g.Expect(len(callNodes)).To(Equal(2))
g.Expect(callNodes[0].Class).To(Equal("ClassOne"))
g.Expect(callNodes[1].Class).To(Equal("ClassTwo"))
}
......@@ -27,7 +27,7 @@ var methodMap = make(map[string]domain.JMethod)
var creatorMethodMap = make(map[string]domain.JMethod)
var methodQueue []domain.JMethod
var classQueue []string
var classStringQueue []string
var identMap map[string]domain.JIdentifier
var isOverrideMethod = false
......@@ -48,7 +48,8 @@ func NewJavaFullListener(nodes map[string]domain.JIdentifier, file string) *Java
currentPkg = ""
classNodes = nil
currentNode = domain.NewClassNode()
classQueue = nil
classStringQueue = nil
classNodeQueue = nil
methodQueue = nil
initClass()
......@@ -391,18 +392,18 @@ func exitMethod() {
func (s *JavaFullListener) EnterInnerCreator(ctx *parser.InnerCreatorContext) {
if ctx.IDENTIFIER() != nil {
currentClz = ctx.IDENTIFIER().GetText()
classQueue = append(classQueue, currentClz)
classStringQueue = append(classStringQueue, currentClz)
}
}
// TODO: add inner creator examples
func (s *JavaFullListener) ExitInnerCreator(ctx *parser.InnerCreatorContext) {
if classQueue == nil || len(classQueue) <= 1 {
if classStringQueue == nil || len(classStringQueue) <= 1 {
return
}
classQueue = classQueue[0 : len(classQueue)-1]
currentClz = classQueue[len(classQueue)-1]
classStringQueue = classStringQueue[0 : len(classStringQueue)-1]
currentClz = classStringQueue[len(classStringQueue)-1]
}
func getMethodMapName(method domain.JMethod) string {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册