@@ -95,6 +95,13 @@ func (g *Generator) Generate(ns *lang.Namespace) error {
9595 // 1. Iterate through ns.Mappings()
9696 // 2. Generate Go code for each var (this discovers lifted values)
9797 mappings := ns .Mappings ()
98+
99+ type namedVar struct {
100+ name * lang.Symbol
101+ vr * lang.Var
102+ }
103+ var internedVars []namedVar
104+
98105 for seq := mappings .Seq (); seq != nil ; seq = seq .Next () {
99106 entry := seq .First ()
100107 name , ok := lang .First (entry ).(* lang.Symbol )
@@ -111,8 +118,15 @@ func (g *Generator) Generate(ns *lang.Namespace) error {
111118 continue // Skip non-interned mappings
112119 }
113120
114- if err := g .generateVar ("ns" , name , vr ); err != nil {
115- return fmt .Errorf ("failed to generate code for var %s: %w" , name , err )
121+ internedVars = append (internedVars , namedVar {name : name , vr : vr })
122+ }
123+ // Sort internedVars by name for deterministic output
124+ sort .Slice (internedVars , func (i , j int ) bool {
125+ return internedVars [i ].name .String () < internedVars [j ].name .String ()
126+ })
127+ for _ , nv := range internedVars {
128+ if err := g .generateVar ("ns" , nv .name , nv .vr ); err != nil {
129+ return fmt .Errorf ("failed to generate code for var %s: %w" , nv .name , err )
116130 }
117131 }
118132
0 commit comments