@@ -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 {
@@ -876,35 +883,49 @@ func (*Package) WITKind() string { return "package" }
876
883
//
877
884
// [WIT]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md
878
885
func (p * Package ) WIT (ctx Node , _ string ) string {
886
+ _ , multi := ctx .(* Resolve )
879
887
var b strings.Builder
880
888
b .WriteString (p .Docs .WIT (ctx , "" ))
881
889
b .WriteString ("package " )
882
890
b .WriteString (p .Name .String ())
883
- b .WriteString (" {\n " )
891
+ if multi {
892
+ b .WriteString (" {\n " )
893
+ } else {
894
+ b .WriteString (";\n \n " )
895
+ }
896
+ i := 0
884
897
if p .Interfaces .Len () > 0 {
885
- i := 0
886
898
p .Interfaces .All ()(func (name string , face * Interface ) bool {
887
899
if i > 0 {
888
900
b .WriteRune ('\n' )
889
901
}
890
- b .WriteString (indent (face .WIT (p , name )))
902
+ if multi {
903
+ b .WriteString (indent (face .WIT (p , name )))
904
+ } else {
905
+ b .WriteString (face .WIT (p , name ))
906
+ }
891
907
b .WriteRune ('\n' )
892
908
i ++
893
909
return true
894
910
})
895
911
}
896
912
if p .Worlds .Len () > 0 {
897
- i := 0
898
913
p .Worlds .All ()(func (name string , w * World ) bool {
899
914
if i > 0 {
900
915
b .WriteRune ('\n' )
901
916
}
902
- b .WriteString (indent (w .WIT (p , name )))
917
+ if multi {
918
+ b .WriteString (indent (w .WIT (p , name )))
919
+ } else {
920
+ b .WriteString (w .WIT (p , name ))
921
+ }
903
922
b .WriteRune ('\n' )
904
923
i ++
905
924
return true
906
925
})
907
926
}
908
- b .WriteRune ('}' )
927
+ if multi {
928
+ b .WriteRune ('}' )
929
+ }
909
930
return b .String ()
910
931
}
0 commit comments