Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var NoDuplicateCaseRule = rule.Rule{ Name: "no-duplicate-case", Run: func(ctx rule.RuleContext, options any) rule.RuleListeners { return rule.RuleListeners{ ast.KindSwitchStatement: func(node *ast.Node) { switchStmt := node.AsSwitchStatement() if switchStmt == nil || switchStmt.CaseBlock == nil { return } caseBlock := switchStmt.CaseBlock.AsCaseBlock() if caseBlock == nil || caseBlock.Clauses == nil { return } seen := make(map[string]bool) for _, clause := range caseBlock.Clauses.Nodes { if clause.Kind != ast.KindCaseClause { continue } caseClause := clause.AsCaseOrDefaultClause() if caseClause == nil || caseClause.Expression == nil { continue } testText := getExpressionTokenSignature(ctx.SourceFile, caseClause.Expression) if seen[testText] { ctx.ReportNode(clause, rule.RuleMessage{ Id: "unexpected", Description: "Duplicate case label.", }) } else { seen[testText] = true } } }, } }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.