@@ -58,6 +58,13 @@ func (r *Resolve) WIT(_ Node, _ string) string {
58
58
slices .SortFunc (packages , func (a , b * Package ) int {
59
59
return strings .Compare (a .Name .String (), b .Name .String ())
60
60
})
61
+ // Special case if only single package.
62
+ if len (packages ) == 1 {
63
+ return packages [0 ].WIT (nil , "" )
64
+ }
65
+ // Use single-file, multi-package style:
66
+ // https://github.com/WebAssembly/component-model/pull/340
67
+ // https://github.com/bytecodealliance/wasm-tools/pull/1577
61
68
var b strings.Builder
62
69
for i , p := range packages {
63
70
if i > 0 {
@@ -970,35 +977,49 @@ func (*Package) WITKind() string { return "package" }
970
977
//
971
978
// [WIT]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md
972
979
func (p * Package ) WIT (ctx Node , _ string ) string {
980
+ _ , multi := ctx .(* Resolve )
973
981
var b strings.Builder
974
982
b .WriteString (p .Docs .WIT (ctx , "" ))
975
983
b .WriteString ("package " )
976
984
b .WriteString (p .Name .String ())
977
- b .WriteString (" {\n " )
985
+ if multi {
986
+ b .WriteString (" {\n " )
987
+ } else {
988
+ b .WriteString (";\n \n " )
989
+ }
990
+ i := 0
978
991
if p .Interfaces .Len () > 0 {
979
- i := 0
980
992
p .Interfaces .All ()(func (name string , face * Interface ) bool {
981
993
if i > 0 {
982
994
b .WriteRune ('\n' )
983
995
}
984
- b .WriteString (indent (face .WIT (p , name )))
996
+ if multi {
997
+ b .WriteString (indent (face .WIT (p , name )))
998
+ } else {
999
+ b .WriteString (face .WIT (p , name ))
1000
+ }
985
1001
b .WriteRune ('\n' )
986
1002
i ++
987
1003
return true
988
1004
})
989
1005
}
990
1006
if p .Worlds .Len () > 0 {
991
- i := 0
992
1007
p .Worlds .All ()(func (name string , w * World ) bool {
993
1008
if i > 0 {
994
1009
b .WriteRune ('\n' )
995
1010
}
996
- b .WriteString (indent (w .WIT (p , name )))
1011
+ if multi {
1012
+ b .WriteString (indent (w .WIT (p , name )))
1013
+ } else {
1014
+ b .WriteString (w .WIT (p , name ))
1015
+ }
997
1016
b .WriteRune ('\n' )
998
1017
i ++
999
1018
return true
1000
1019
})
1001
1020
}
1002
- b .WriteRune ('}' )
1021
+ if multi {
1022
+ b .WriteRune ('}' )
1023
+ }
1003
1024
return b .String ()
1004
1025
}
0 commit comments