@@ -184,7 +184,7 @@ func (d *DocGenerator) buildIndexDocument(docsByDomain iter.Seq2[string, model.D
184184 }
185185
186186 doc .RefCount = len (doc .Index )
187- doc .Metrics = buildMetrics (docsByDomain )
187+ doc .Metrics = d . buildMetrics (docsByDomain )
188188 doc .QuickIndex = buildQuickIndex (docsByDomain )
189189
190190 return doc
@@ -209,7 +209,7 @@ func buildIndexEntries(docsByDomain iter.Seq2[string, model.Document]) []model.I
209209 return entries
210210}
211211
212- func buildMetrics (docsByDomain iter.Seq2 [string , model.Document ]) (metrics model.Metrics ) {
212+ func ( d * DocGenerator ) buildMetrics (docsByDomain iter.Seq2 [string , model.Document ]) (metrics model.Metrics ) {
213213 metrics .ByDomain = make (map [string ]model.DomainMetrics )
214214
215215 for domain , doc := range docsByDomain {
@@ -240,7 +240,28 @@ func buildMetrics(docsByDomain iter.Seq2[string, model.Document]) (metrics model
240240 metrics .ByDomain [domain ] = domainMetrics
241241 }
242242
243- metrics .NonGenerics = metrics .Functions - metrics .Generics
243+ metrics .NonGenerics = metrics .Assertions - metrics .Generics
244+ variantsMultiplier := 1
245+ genericsVariantsMultiplier := 1
246+
247+ if d .ctx .enableForward {
248+ variantsMultiplier ++
249+ if d .ctx .enableFormat {
250+ variantsMultiplier ++
251+ }
252+ }
253+
254+ if d .ctx .enableFormat {
255+ variantsMultiplier ++
256+ genericsVariantsMultiplier ++
257+ }
258+
259+ metrics .PackageVariants = metrics .NonGenerics * variantsMultiplier + metrics .Generics * genericsVariantsMultiplier
260+
261+ // caveat: assume 2 target packages (not really available from options atm).
262+ const generatedPackages = 2
263+ metrics .TotalVariants = generatedPackages * metrics .PackageVariants
264+ metrics .TotalFunctions = generatedPackages * (metrics .PackageVariants + metrics .Helpers + 1 ) // add the Assertion constructor.
244265
245266 return metrics
246267}
0 commit comments