Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
3b01c48c
wa
项目概览
wa-lang
/
wa
12 个月 前同步成功
通知
68
Star
655
Fork
45
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
wa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3b01c48c
编写于
7月 29, 2022
作者:
3
3dgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
初步支持method
上级
f939ef4d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
11 deletion
+31
-11
internal/backends/compiler_c/compile_func.go
internal/backends/compiler_c/compile_func.go
+3
-3
internal/backends/compiler_c/compiler_c.go
internal/backends/compiler_c/compiler_c.go
+23
-8
internal/ssa/ssa.go
internal/ssa/ssa.go
+5
-0
未找到文件。
internal/backends/compiler_c/compile_func.go
浏览文件 @
3b01c48c
...
...
@@ -304,7 +304,7 @@ func (g *functionGenerator) genBinOp(inst *ssa.BinOp) cir.Expr {
func
(
g
*
functionGenerator
)
genCall
(
inst
*
ssa
.
Call
)
cir
.
Expr
{
if
inst
.
Call
.
IsInvoke
()
{
logger
.
Fatal
(
"Todo: Invoke"
)
logger
.
Fatal
(
"Todo:
genCall(),
Invoke"
)
}
switch
inst
.
Call
.
Value
.
(
type
)
{
...
...
@@ -325,7 +325,7 @@ func (g *functionGenerator) genCall(inst *ssa.Call) cir.Expr {
return
g
.
genBuiltin
(
inst
.
Common
())
case
*
ssa
.
MakeClosure
:
logger
.
Fatal
(
"Todo: MakeClosure"
)
logger
.
Fatal
(
"Todo:
genCall(),
MakeClosure"
)
default
:
logger
.
Fatalf
(
"Todo: type:%T"
,
inst
.
Call
.
Value
)
...
...
@@ -390,7 +390,7 @@ func (g *functionGenerator) genFieldAddr(inst *ssa.FieldAddr) cir.Expr {
func
(
g
*
functionGenerator
)
genField
(
inst
*
ssa
.
Field
)
cir
.
Expr
{
cx
:=
g
.
getValue
(
inst
.
X
)
field
:=
inst
.
X
.
Type
()
.
(
*
types
.
Struct
)
.
Field
(
inst
.
Field
)
field
:=
inst
.
X
.
Type
()
.
Underlying
()
.
(
*
types
.
Struct
)
.
Field
(
inst
.
Field
)
fieldname
:=
field
.
Name
()
if
field
.
Embedded
()
{
fieldname
=
"$"
+
fieldname
...
...
internal/backends/compiler_c/compiler_c.go
浏览文件 @
3b01c48c
...
...
@@ -38,21 +38,36 @@ func (p *CompilerC) CompilePackage(ssaPkg *ssa.Package) {
}
}
for
_
,
t
:=
range
ts
{
p
.
compileType
(
t
)
for
_
,
v
:=
range
ts
{
p
.
compileType
(
v
)
}
for
_
,
c
:=
range
cs
{
p
.
compileConst
(
c
)
for
_
,
v
:=
range
cs
{
p
.
compileConst
(
v
)
}
for
_
,
g
:=
range
gs
{
p
.
compileGlobal
(
g
)
for
_
,
v
:=
range
gs
{
p
.
compileGlobal
(
v
)
}
for
_
,
fn
:=
range
fns
{
newFunctionGenerator
(
p
)
.
genFunction
(
fn
)
for
_
,
v
:=
range
ssaPkg
.
GetValues
()
{
if
f
,
ok
:=
v
.
(
*
ssa
.
Function
);
ok
{
found
:=
false
for
_
,
m
:=
range
fns
{
if
m
.
Object
()
==
f
.
Object
()
{
found
=
true
}
}
if
found
{
continue
}
fns
=
append
(
fns
,
f
)
}
}
for
_
,
v
:=
range
fns
{
newFunctionGenerator
(
p
)
.
genFunction
(
v
)
}
}
func
(
p
*
CompilerC
)
String
()
string
{
...
...
internal/ssa/ssa.go
浏览文件 @
3b01c48c
...
...
@@ -1410,6 +1410,11 @@ func (p *Package) Type(name string) (t *Type) {
return
}
//强制导出values
func
(
p
*
Package
)
GetValues
()
map
[
types
.
Object
]
Value
{
return
p
.
values
}
func
(
v
*
Call
)
Pos
()
token
.
Pos
{
return
v
.
Call
.
pos
}
func
(
s
*
Defer
)
Pos
()
token
.
Pos
{
return
s
.
pos
}
func
(
s
*
MapUpdate
)
Pos
()
token
.
Pos
{
return
s
.
pos
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录