Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
Coca
提交
9296a41d
C
Coca
项目概览
Phodal
/
Coca
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coca
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
9296a41d
编写于
1月 13, 2020
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: fix empty self function issues
上级
350b13b5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
77 addition
and
71 deletion
+77
-71
trial/cocago/cocago_parser.go
trial/cocago/cocago_parser.go
+25
-19
trial/cocago/testdata/nested_method.json
trial/cocago/testdata/nested_method.json
+52
-52
未找到文件。
trial/cocago/cocago_parser.go
浏览文件 @
9296a41d
...
...
@@ -162,30 +162,34 @@ func BuildFunction(x *ast.FuncDecl) *trial.CodeFunction {
func
BuildMethodCall
(
codeFunc
*
trial
.
CodeFunction
,
item
ast
.
Stmt
)
{
switch
it
:=
item
.
(
type
)
{
case
*
ast
.
ExprStmt
:
switch
expr
:=
it
.
X
.
(
type
)
{
case
*
ast
.
CallExpr
:
selector
,
selName
:=
BuildExpr
(
expr
.
Fun
.
(
ast
.
Expr
))
call
:=
trial
.
CodeCall
{
Package
:
""
,
Type
:
""
,
Class
:
selector
,
MethodName
:
selName
,
}
BuildMethodCallExprStmt
(
it
,
codeFunc
)
default
:
fmt
.
Println
(
"methodCall"
,
reflect
.
TypeOf
(
it
))
}
}
for
_
,
arg
:=
range
expr
.
Args
{
value
,
kind
:=
BuildExpr
(
arg
.
(
ast
.
Expr
))
property
:=
&
trial
.
CodeProperty
{
TypeName
:
value
,
TypeType
:
kind
,
}
func
BuildMethodCallExprStmt
(
it
*
ast
.
ExprStmt
,
codeFunc
*
trial
.
CodeFunction
)
{
switch
expr
:=
it
.
X
.
(
type
)
{
case
*
ast
.
CallExpr
:
selector
,
selName
:=
BuildExpr
(
expr
.
Fun
.
(
ast
.
Expr
))
call
:=
trial
.
CodeCall
{
Package
:
""
,
Type
:
""
,
Class
:
selector
,
MethodName
:
selName
,
}
call
.
Parameters
=
append
(
call
.
Parameters
,
*
property
)
for
_
,
arg
:=
range
expr
.
Args
{
value
,
kind
:=
BuildExpr
(
arg
.
(
ast
.
Expr
))
property
:=
&
trial
.
CodeProperty
{
TypeName
:
value
,
TypeType
:
kind
,
}
c
odeFunc
.
MethodCalls
=
append
(
codeFunc
.
MethodCalls
,
call
)
c
all
.
Parameters
=
append
(
call
.
Parameters
,
*
property
)
}
default
:
fmt
.
Println
(
"methodCall"
,
reflect
.
TypeOf
(
it
)
)
codeFunc
.
MethodCalls
=
append
(
codeFunc
.
MethodCalls
,
call
)
}
}
...
...
@@ -197,6 +201,8 @@ func BuildExpr(expr ast.Expr) (string, string) {
return
selector
,
selName
case
*
ast
.
BasicLit
:
return
x
.
Value
,
x
.
Kind
.
String
()
case
*
ast
.
Ident
:
return
x
.
Name
,
x
.
Obj
.
Kind
.
String
()
default
:
fmt
.
Println
(
"BuildExpr"
,
reflect
.
TypeOf
(
x
))
}
...
...
trial/cocago/testdata/nested_method.json
浏览文件 @
9296a41d
{
"ClassNodes"
:
null
,
"DataStructures"
:
null
,
"FullName"
:
"testdata/nested_method.code"
,
"Imports"
:
[
"fmt"
],
"Members"
:
[
{
"ClassNodes"
:
null
,
"DataStructID"
:
"default"
,
"FileID"
:
""
,
"ID"
:
""
,
"MethodNodes"
:
[
{
"Annotations"
:
null
,
"Creators"
:
null
,
"InnerFunctions"
:
null
,
"MethodCalls"
:
[
{
"Class"
:
"
"
,
"MethodName"
:
"
"
,
"Package"
:
""
,
"Parameters"
:
[
{
"Modifiers"
:
null
,
"Name"
:
""
,
"TypeName"
:
"
\"
Hello World!
\"
"
,
"TypeType"
:
"STRING"
}
],
"Type"
:
""
}
],
"Modifiers"
:
null
,
"Name"
:
"f"
,
"Override"
:
false
,
"Parameters"
:
null
,
"ReturnTypes"
:
null
}
],
"Name"
:
""
,
"Namespace"
:
null
,
"Position"
:
{
"StartLine"
:
0
,
"StartLinePosition"
:
0
,
"StopLine"
:
0
,
"StopLinePosition"
:
0
},
"Type"
:
"method"
}
],
"PackageName"
:
"testdata"
"ClassNodes"
:
null
,
"DataStructures"
:
null
,
"FullName"
:
"testdata/nested_method.code"
,
"Imports"
:
[
"fmt"
],
"Members"
:
[
{
"ClassNodes"
:
null
,
"DataStructID"
:
"default"
,
"FileID"
:
""
,
"ID"
:
""
,
"MethodNodes"
:
[
{
"Annotations"
:
null
,
"Creators"
:
null
,
"InnerFunctions"
:
null
,
"MethodCalls"
:
[
{
"Class"
:
"foo
"
,
"MethodName"
:
"var
"
,
"Package"
:
""
,
"Parameters"
:
[
{
"Modifiers"
:
null
,
"Name"
:
""
,
"TypeName"
:
"
\"
Hello World!
\"
"
,
"TypeType"
:
"STRING"
}
],
"Type"
:
""
}
],
"Modifiers"
:
null
,
"Name"
:
"f"
,
"Override"
:
false
,
"Parameters"
:
null
,
"ReturnTypes"
:
null
}
],
"Name"
:
""
,
"Namespace"
:
null
,
"Position"
:
{
"StartLine"
:
0
,
"StartLinePosition"
:
0
,
"StopLine"
:
0
,
"StopLinePosition"
:
0
},
"Type"
:
"method"
}
],
"PackageName"
:
"testdata"
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录