internal override Statement /*!*/ Analyze(Analyzer /*!*/ analyzer) { // // TODO: analyze reachability, restrict jumps inside blocks, ... // // goto x; // // unreachable // x: // if (analyzer.IsThisCodeUnreachable()) { analyzer.ReportUnreachableCode(position); return(EmptyStmt.Unreachable); } Dictionary <VariableName, Statement> labels = analyzer.CurrentLabels; Statement stmt; if (labels.TryGetValue(labelName, out stmt)) { LabelStmt label = stmt as LabelStmt; if (label != null) { label.IsReferred = true; } } else { // add a stub (this node): labels.Add(labelName, this); } return(this); }
virtual public void VisitLabelStmt(LabelStmt x) { // x.Name }
virtual public void VisitLabelStmt(LabelStmt x) { // nothing }