private static LoweredSwitchStatement LowerSwitchStatement(SwitchAnalysis analysis, Type testValueType, bool hoistNull = false) { var res = new LoweredSwitchStatement(); var defaultCase = analysis.DefaultCase; if (defaultCase != null) { Debug.Assert(analysis.IsDefaultLonely); Debug.Assert(defaultCase.TestValues.Count == 1); var body = MakeBlock(defaultCase.Statements); res.DefaultCase = body; } var otherCases = analysis.OtherCases; var n = otherCases.Count; var cases = new List <SwitchCase>(n); for (var i = 0; i < n; i++) { var @case = ConvertSwitchCase(otherCases[i], testValueType); cases.Add(@case); } var nullCase = analysis.NullCase; if (nullCase != null) { if (hoistNull) { Debug.Assert(analysis.IsNullLonely); Debug.Assert(nullCase.TestValues.Count == 1); var body = MakeBlock(nullCase.Statements); res.NullCase = body; } else { var @case = ConvertSwitchCase(nullCase, testValueType); cases.Add(@case); } } res.Cases = cases; return(res); }
private static LoweredSwitchStatement LowerSwitchStatement(SwitchAnalysis analysis, Type testValueType, bool hoistNull = false) { var res = new LoweredSwitchStatement(); var defaultCase = analysis.DefaultCase; if (defaultCase != null) { Debug.Assert(analysis.IsDefaultLonely); Debug.Assert(defaultCase.TestValues.Count == 1); var body = MakeBlock(defaultCase.Statements); res.DefaultCase = body; } var otherCases = analysis.OtherCases; var n = otherCases.Count; var cases = new List<SwitchCase>(n); for (var i = 0; i < n; i++) { var @case = ConvertSwitchCase(otherCases[i], testValueType); cases.Add(@case); } var nullCase = analysis.NullCase; if (nullCase != null) { if (hoistNull) { Debug.Assert(analysis.IsNullLonely); Debug.Assert(nullCase.TestValues.Count == 1); var body = MakeBlock(nullCase.Statements); res.NullCase = body; } else { var @case = ConvertSwitchCase(nullCase, testValueType); cases.Add(@case); } } res.Cases = cases; return res; }