Skip to content

Commit 4404cd2

Browse files
authored
Merge pull request #267 from bytecodealliance/ydnar/issue-264
wit/bindgen: correctly cast to named Go bool types when lowering
2 parents 350ed0e + e97bebe commit 4404cd2

File tree

10 files changed

+92
-7
lines changed

10 files changed

+92
-7
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
44

5+
## [Unreleased]
6+
7+
### Fixed
8+
9+
- [#264](https://github.com/bytecodealliance/go-modules/issues/264): fix lowering for imported functions that return named `bool` types.
10+
511
## [v0.4.1] — 2024-12-09
612

713
### Added

testdata/issues/issue264.wit

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package issues:issue264;
2+
3+
interface i {
4+
type boolean = bool;
5+
f: func() -> boolean;
6+
}
7+
8+
world w {
9+
import i;
10+
}

testdata/issues/issue264.wit.json

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
"worlds": [
3+
{
4+
"name": "w",
5+
"imports": {
6+
"interface-0": {
7+
"interface": {
8+
"id": 0
9+
}
10+
}
11+
},
12+
"exports": {},
13+
"package": 0
14+
}
15+
],
16+
"interfaces": [
17+
{
18+
"name": "i",
19+
"types": {
20+
"boolean": 0
21+
},
22+
"functions": {
23+
"f": {
24+
"name": "f",
25+
"kind": "freestanding",
26+
"params": [],
27+
"results": [
28+
{
29+
"type": 0
30+
}
31+
]
32+
}
33+
},
34+
"package": 0
35+
}
36+
],
37+
"types": [
38+
{
39+
"name": "boolean",
40+
"kind": {
41+
"type": "bool"
42+
},
43+
"owner": {
44+
"interface": 0
45+
}
46+
}
47+
],
48+
"packages": [
49+
{
50+
"name": "issues:issue264",
51+
"interfaces": {
52+
"i": 0
53+
},
54+
"worlds": {
55+
"w": 0
56+
}
57+
}
58+
]
59+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package issues:issue264;
2+
3+
interface i {
4+
type boolean = bool;
5+
f: func() -> boolean;
6+
}
7+
8+
world w {
9+
import i;
10+
}

tests/generated/wasi/cli/v0.2.0/exit/exit.wit.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/generated/wasi/cli/v0.2.0/run/run.wasm.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/generated/wasi/filesystem/v0.2.0/types/types.wit.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/generated/wasi/io/v0.2.0/poll/poll.wit.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/generated/wasi/sockets/v0.2.0/tcp/tcp.wit.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wit/bindgen/generator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1456,7 +1456,7 @@ func (g *generator) cast(file *gen.File, dir wit.Direction, from, to wit.Type, i
14561456
if t != nil {
14571457
return g.cmCall(file, goKind(from)+"To"+goKind(to)+"["+g.typeRep(file, dir, t)+"]", input)
14581458
}
1459-
return g.cmCall(file, goKind(from)+"To"+goKind(to), input)
1459+
return "(" + g.typeRep(file, dir, to) + ")(" + g.cmCall(file, goKind(from)+"To"+goKind(to), input) + ")"
14601460
}
14611461

14621462
func goKind(t wit.Node) string {

0 commit comments

Comments
 (0)