@@ -15,8 +15,8 @@ use wit_bindgen_core::abi::{
1515} ;
1616use wit_bindgen_core:: wit_parser:: {
1717 Alignment , ArchitectureSize , Docs , Enum , Flags , FlagsRepr , Function , FunctionKind , Handle , Int ,
18- InterfaceId , Record , Resolve , Result_ , SizeAlign , Tuple , Type , TypeDefKind , TypeId , TypeOwner ,
19- Variant , WorldId , WorldKey ,
18+ InterfaceId , Package , PackageName , Record , Resolve , Result_ , SizeAlign , Tuple , Type ,
19+ TypeDefKind , TypeId , TypeOwner , Variant , WorldId , WorldKey ,
2020} ;
2121use wit_bindgen_core:: {
2222 AsyncFilterSet , Direction , Files , InterfaceGenerator as _, Ns , WorldGenerator , uwriteln,
@@ -776,7 +776,39 @@ impl WorldGenerator for Go {
776776 _ = ( resolve, id) ;
777777
778778 let version = env ! ( "CARGO_PKG_VERSION" ) ;
779- let header = & format ! ( "// Generated by `wit-bindgen` {version}. DO NOT EDIT!" ) ;
779+ let packages = resolve
780+ . packages
781+ . iter ( )
782+ . map (
783+ |(
784+ _,
785+ Package {
786+ name :
787+ PackageName {
788+ namespace,
789+ name,
790+ version,
791+ } ,
792+ ..
793+ } ,
794+ ) | {
795+ let version = if let Some ( version) = version {
796+ format ! ( "@{version}" )
797+ } else {
798+ String :: new ( )
799+ } ;
800+ format ! ( "// {namespace}:{name}{version}" )
801+ } ,
802+ )
803+ . collect :: < Vec < _ > > ( )
804+ . join ( "\n " ) ;
805+ let header = & format ! (
806+ "// Generated by `wit-bindgen` {version}. DO NOT EDIT!
807+ //
808+ // This code was generated from the following packages:
809+ {packages}
810+ "
811+ ) ;
780812
781813 let src = mem:: take ( & mut self . src ) ;
782814 let align = self . return_area_align . format ( POINTER_SIZE_EXPRESSION ) ;
0 commit comments