MCPcopy Index your code
hub / github.com/MadAppGang/dingo / generateGroupedCasesWithAssignment

Method generateGroupedCasesWithAssignment

pkg/codegen/match.go:351–372  ·  view source on GitHub ↗

generateGroupedCasesWithAssignment is like generateGroupedCases but for assignment context.

(varName string, typeSwitch bool)

Source from the content-addressed store, hash-verified

349
350// generateGroupedCasesWithAssignment is like generateGroupedCases but for assignment context.
351func (g *MatchCodeGen) generateGroupedCasesWithAssignment(varName string, typeSwitch bool) {
352 // Group arms by their case key
353 groups := make(map[string]*armGroup)
354 var order []string
355
356 for _, arm := range g.Match.Arms {
357 key := g.getPatternCaseKey(arm.Pattern)
358 if _, exists := groups[key]; !exists {
359 groups[key] = &armGroup{
360 typeName: key,
361 isDefault: key == "default",
362 }
363 order = append(order, key)
364 }
365 groups[key].arms = append(groups[key].arms, arm)
366 }
367
368 for _, key := range order {
369 group := groups[key]
370 g.generateGroupedCaseWithAssignment(group, varName, typeSwitch)
371 }
372}
373
374// generateGroupedCaseWithAssignment generates a single case clause with assignment for a group.
375func (g *MatchCodeGen) generateGroupedCaseWithAssignment(group *armGroup, varName string, typeSwitch bool) {

Callers 1

Calls 2

getPatternCaseKeyMethod · 0.95

Tested by

no test coverage detected