generateConstructorCaseWithAssignment generates case for constructor patterns with assignment.
(pattern *ast.ConstructorPattern, arm *ast.MatchArm, varName string, typeSwitch bool)
| 912 | |
| 913 | // generateConstructorCaseWithAssignment generates case for constructor patterns with assignment. |
| 914 | func (g *MatchCodeGen) generateConstructorCaseWithAssignment(pattern *ast.ConstructorPattern, arm *ast.MatchArm, varName string, typeSwitch bool) { |
| 915 | // Convert constructor name to full type name |
| 916 | typeName := g.constructorToTypeName(pattern.Name) |
| 917 | |
| 918 | g.Write("case " + typeName + ":\n") |
| 919 | |
| 920 | // Extract bindings from constructor parameters |
| 921 | var bindings []Binding |
| 922 | numParams := len(pattern.Params) |
| 923 | isTupleVariant := g.isTupleVariant(typeName) |
| 924 | for i, param := range pattern.Params { |
| 925 | bindings = append(bindings, g.extractBindings(param, i, numParams, isTupleVariant)...) |
| 926 | } |
| 927 | |
| 928 | g.generateArmBodyWithAssignment(arm, varName, bindings) |
| 929 | } |
| 930 | |
| 931 | // generateLiteralCaseWithAssignment generates case for literal patterns with assignment. |
| 932 | func (g *MatchCodeGen) generateLiteralCaseWithAssignment(pattern *ast.LiteralPattern, arm *ast.MatchArm, varName string) { |
no test coverage detected