func (v *UnreachableCheck) PostVisit(s *SemanticAnalyzer, n parser.Node) { switch n := n.(type) { case *parser.Block: for i, c := range n.Nodes { if i < len(n.Nodes)-1 && IsNodeTerminating(c) { s.Err(n.Nodes[i+1], "Unreachable code") } } if len(n.Nodes) > 0 { n.IsTerminating = IsNodeTerminating(n.Nodes[len(n.Nodes)-1]) } case *parser.FunctionDecl: v.visitFunction(s, n, n.Function) case *parser.LambdaExpr: v.visitFunction(s, n, n.Function) } }