Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Phodal
Coca
提交
f9feda8c
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,发现更多精彩内容 >>
未验证
提交
f9feda8c
编写于
12月 19, 2019
作者:
P
Phodal Huang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: add annotation to identifer
上级
a7cd90f8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
54 addition
and
21 deletion
+54
-21
core/adapter/identifier/JavaIdentifierListener.go
core/adapter/identifier/JavaIdentifierListener.go
+52
-19
core/models/JMethod.go
core/models/JMethod.go
+2
-2
未找到文件。
core/adapter/identifier/JavaIdentifierListener.go
浏览文件 @
f9feda8c
...
...
@@ -7,6 +7,10 @@ import (
var
node
*
JIdentifier
var
currentMethod
models
.
JMethod
var
hasEnterClass
=
false
var
hasEnterMethod
=
false
type
JavaIdentifierListener
struct
{
parser
.
BaseJavaParserListener
}
...
...
@@ -16,6 +20,8 @@ func (s *JavaIdentifierListener) EnterPackageDeclaration(ctx *parser.PackageDecl
}
func
(
s
*
JavaIdentifierListener
)
EnterClassDeclaration
(
ctx
*
parser
.
ClassDeclarationContext
)
{
hasEnterClass
=
true
node
.
Type
=
"Class"
if
ctx
.
IDENTIFIER
()
!=
nil
{
node
.
Name
=
ctx
.
IDENTIFIER
()
.
GetText
()
...
...
@@ -26,7 +32,14 @@ func (s *JavaIdentifierListener) EnterClassDeclaration(ctx *parser.ClassDeclarat
}
}
func
(
s
*
JavaIdentifierListener
)
ExitClassDeclaration
(
ctx
*
parser
.
ClassDeclarationContext
)
{
hasEnterClass
=
false
}
func
(
s
*
JavaIdentifierListener
)
EnterInterfaceMethodDeclaration
(
ctx
*
parser
.
InterfaceMethodDeclarationContext
)
{
hasEnterMethod
=
true
startLine
:=
ctx
.
GetStart
()
.
GetLine
()
startLinePosition
:=
ctx
.
GetStart
()
.
GetColumn
()
stopLine
:=
ctx
.
GetStop
()
.
GetLine
()
...
...
@@ -35,22 +48,31 @@ func (s *JavaIdentifierListener) EnterInterfaceMethodDeclaration(ctx *parser.Int
//XXX: find the start position of {, not public
typeType
:=
ctx
.
TypeTypeOrVoid
()
.
GetText
()
method
:=
&
models
.
JMethod
{
Name
:
name
,
Type
:
typeType
,
StartLine
:
startLine
,
annotations
:=
currentMethod
.
Annotations
currentMethod
=
*&
models
.
JMethod
{
Name
:
name
,
Type
:
typeType
,
StartLine
:
startLine
,
StartLinePosition
:
startLinePosition
,
StopLine
:
stopLine
,
StopLinePosition
:
stopLinePosition
,
Override
:
isOverrideMethod
,
Annotation
:
nil
,
StopLine
:
stopLine
,
StopLinePosition
:
stopLinePosition
,
Override
:
isOverrideMethod
,
Annotation
s
:
annotations
,
}
node
.
AddMethod
(
*
method
)
}
func
(
s
*
JavaIdentifierListener
)
ExitInterfaceDeclaration
(
ctx
*
parser
.
InterfaceDeclarationContext
)
{
hasEnterMethod
=
false
node
.
AddMethod
(
currentMethod
)
currentMethod
=
models
.
NewJMethod
()
}
var
isOverrideMethod
=
false
func
(
s
*
JavaIdentifierListener
)
EnterMethodDeclaration
(
ctx
*
parser
.
MethodDeclarationContext
)
{
hasEnterMethod
=
true
startLine
:=
ctx
.
GetStart
()
.
GetLine
()
startLinePosition
:=
ctx
.
GetStart
()
.
GetColumn
()
stopLine
:=
ctx
.
GetStop
()
.
GetLine
()
...
...
@@ -60,28 +82,39 @@ func (s *JavaIdentifierListener) EnterMethodDeclaration(ctx *parser.MethodDeclar
typeType
:=
ctx
.
TypeTypeOrVoid
()
.
GetText
()
method
:=
&
models
.
JMethod
{
Name
:
name
,
Type
:
typeType
,
StartLine
:
startLine
,
annotations
:=
currentMethod
.
Annotations
currentMethod
=
*&
models
.
JMethod
{
Name
:
name
,
Type
:
typeType
,
StartLine
:
startLine
,
StartLinePosition
:
startLinePosition
,
StopLine
:
stopLine
,
StopLinePosition
:
stopLinePosition
,
Override
:
isOverrideMethod
,
Annotation
:
nil
,
StopLine
:
stopLine
,
StopLinePosition
:
stopLinePosition
,
Override
:
isOverrideMethod
,
Annotation
s
:
annotations
,
}
node
.
AddMethod
(
*
method
)
isOverrideMethod
=
false
}
func
(
s
*
JavaIdentifierListener
)
ExitMethodDeclaration
(
ctx
*
parser
.
MethodDeclarationContext
)
{
hasEnterMethod
=
false
node
.
AddMethod
(
currentMethod
)
currentMethod
=
models
.
NewJMethod
()
}
func
(
s
*
JavaIdentifierListener
)
EnterAnnotation
(
ctx
*
parser
.
AnnotationContext
)
{
// Todo: support override method
annotationName
:=
ctx
.
QualifiedName
()
.
GetText
()
if
annotationName
==
"Override"
{
isOverrideMethod
=
true
}
if
hasEnterClass
{
if
!
hasEnterMethod
{
currentMethod
.
Annotations
=
append
(
currentMethod
.
Annotations
,
annotationName
)
}
}
}
func
(
s
*
JavaIdentifierListener
)
EnterInterfaceDeclaration
(
ctx
*
parser
.
InterfaceDeclarationContext
)
{
...
...
core/models/JMethod.go
浏览文件 @
f9feda8c
...
...
@@ -10,14 +10,14 @@ type JMethod struct {
Parameters
[]
JParameter
MethodCalls
[]
JMethodCall
Override
bool
Annotation
[]
string
Annotation
s
[]
string
}
func
NewJMethod
()
JMethod
{
return
*&
JMethod
{
Name
:
""
,
Type
:
""
,
Annotation
:
nil
,
Annotation
s
:
nil
,
StartLine
:
0
,
StartLinePosition
:
0
,
StopLine
:
0
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录