Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
14bebe34
Commit
14bebe34
authored
Nov 27, 2015
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #17757 from caesarxuchao/go2idl-add-functions
Auto commit by PR queue bot
parents
a4260751
75cf28b7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
5 deletions
+38
-5
parse.go
cmd/libs/go2idl/parser/parse.go
+24
-4
parse_test.go
cmd/libs/go2idl/parser/parse_test.go
+14
-1
No files found.
cmd/libs/go2idl/parser/parse.go
View file @
14bebe34
...
...
@@ -293,11 +293,14 @@ func (b *Builder) FindTypes() (types.Universe, error) {
for
_
,
n
:=
range
s
.
Names
()
{
obj
:=
s
.
Lookup
(
n
)
tn
,
ok
:=
obj
.
(
*
tc
.
TypeName
)
if
!
ok
{
continue
if
ok
{
t
:=
b
.
walkType
(
u
,
nil
,
tn
.
Type
())
t
.
CommentLines
=
b
.
priorCommentLines
(
obj
.
Pos
())
}
tf
,
ok
:=
obj
.
(
*
tc
.
Func
)
if
ok
{
b
.
addFunc
(
u
,
nil
,
tf
)
}
t
:=
b
.
walkType
(
u
,
nil
,
tn
.
Type
())
t
.
CommentLines
=
b
.
priorCommentLines
(
obj
.
Pos
())
}
for
p
:=
range
b
.
importGraph
[
pkgName
]
{
u
.
AddImports
(
pkgName
,
p
)
...
...
@@ -316,6 +319,12 @@ func (b *Builder) priorCommentLines(pos token.Pos) string {
return
""
}
func
tcFuncNameToName
(
in
string
)
types
.
Name
{
name
:=
strings
.
TrimLeft
(
in
,
"func "
)
nameParts
:=
strings
.
Split
(
name
,
"("
)
return
tcNameToName
(
nameParts
[
0
])
}
func
tcNameToName
(
in
string
)
types
.
Name
{
// Detect anonymous type names. (These may have '.' characters because
// embedded types may have packages, so we detect them specially.)
...
...
@@ -495,3 +504,14 @@ func (b *Builder) walkType(u types.Universe, useName *types.Name, in tc.Type) *t
return
out
}
}
func
(
b
*
Builder
)
addFunc
(
u
types
.
Universe
,
useName
*
types
.
Name
,
in
*
tc
.
Func
)
*
types
.
Type
{
name
:=
tcFuncNameToName
(
in
.
String
())
if
useName
!=
nil
{
name
=
*
useName
}
out
:=
u
.
Get
(
name
)
out
.
Kind
=
types
.
Func
out
.
Signature
=
b
.
convertSignature
(
u
,
in
.
Type
()
.
(
*
tc
.
Signature
))
return
out
}
cmd/libs/go2idl/parser/parse_test.go
View file @
14bebe34
...
...
@@ -70,6 +70,9 @@ type Object struct {
common.Object
}
func AFunc(obj1 common.Object, obj2 Object) Frobber {
}
`
,
"base/common/proto/common.go"
:
`
package common
...
...
@@ -88,11 +91,16 @@ package o
}
{{end}}
{{range $t := .}}{{if eq $t.Kind "Struct"}}{{template "Struct" $t}}{{end}}{{end}}`
{{define "Func"}}{{$s := .Signature}}func {{Raw .}}( {{range $s.Parameters}}{{Raw .}} {{end}}) {{range $s.Results}}{{Raw .}} {{end}}{}
{{end}}
{{range $t := .}}{{if eq $t.Kind "Struct"}}{{template "Struct" $t}}{{end}}{{end}}
{{range $t := .}}{{if eq $t.Kind "Func"}}{{template "Func" $t}}{{end}}{{end}}`
var
expect
=
`
package o
type CommonObject interface {
ID() Int64
SetID(Int64)
...
...
@@ -119,8 +127,12 @@ type FooObject interface {
CommonObject
}
func proto.AFunc( proto.Object proto.Object ) proto.Frobber {}
`
testNamer
:=
namer
.
NewPublicNamer
(
1
,
"proto"
)
rawNamer
:=
namer
.
NewRawNamer
(
"o"
,
nil
)
_
,
u
,
o
:=
construct
(
t
,
testFiles
,
testNamer
)
t
.
Logf
(
"
\n
%v
\n\n
"
,
o
)
tmpl
:=
template
.
Must
(
...
...
@@ -128,6 +140,7 @@ type FooObject interface {
Funcs
(
map
[
string
]
interface
{}{
"Name"
:
testNamer
.
Name
,
"Raw"
:
rawNamer
.
Name
,
})
.
Parse
(
tmplText
),
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment