|
2 | 2 | using Rubberduck.Parsing.Grammar;
|
3 | 3 | using System;
|
4 | 4 | using System.Collections.Generic;
|
| 5 | +using System.Globalization; |
5 | 6 | using System.Linq;
|
6 | 7 |
|
7 | 8 | namespace Rubberduck.Inspections.Concrete.UnreachableCaseInspection{
|
8 | 9 |
|
9 | 10 | public static class ExpressionFilterFactory
|
10 | 11 | {
|
11 |
| - private static Dictionary<string, (long typeMin, long typeMax)> IntegralNumberExtents = new Dictionary<string, (long typeMin, long typeMax)>() |
| 12 | + private static readonly Dictionary<string, (long typeMin, long typeMax)> IntegralNumberExtents = new Dictionary<string, (long typeMin, long typeMax)>() |
12 | 13 | {
|
13 | 14 | [Tokens.LongLong] = (long.MinValue, long.MaxValue),
|
14 |
| - [Tokens.Long] = (Int32.MinValue, Int32.MaxValue), |
15 |
| - [Tokens.Integer] = (Int16.MinValue, Int16.MaxValue), |
16 |
| - [Tokens.Int] = (Int16.MinValue, Int16.MaxValue), |
| 15 | + [Tokens.Long] = (int.MinValue, int.MaxValue), |
| 16 | + [Tokens.Integer] = (short.MinValue, short.MaxValue), |
| 17 | + [Tokens.Int] = (short.MinValue, short.MaxValue), |
17 | 18 | [Tokens.Byte] = (byte.MinValue, byte.MaxValue)
|
18 | 19 | };
|
19 | 20 |
|
20 | 21 | public static IExpressionFilter Create(string valueType)
|
21 | 22 | {
|
22 | 23 | if (IntegralNumberExtents.Keys.Contains(valueType))
|
23 | 24 | {
|
24 |
| - var integralNumberFilter = new ExpressionFilterIntegral(valueType, long.Parse); |
| 25 | + var integralNumberFilter = new ExpressionFilterIntegral(valueType, s => long.Parse(s, CultureInfo.InvariantCulture)); |
25 | 26 | integralNumberFilter.SetExtents(IntegralNumberExtents[valueType].typeMin, IntegralNumberExtents[valueType].typeMax);
|
26 | 27 | return integralNumberFilter;
|
27 | 28 | }
|
28 |
| - else if (valueType.Equals(Tokens.Double) || valueType.Equals(Tokens.Single)) |
| 29 | + if (valueType.Equals(Tokens.Double) || valueType.Equals(Tokens.Single)) |
29 | 30 | {
|
30 |
| - var floatingPointNumberFilter = new ExpressionFilter<double>(valueType, double.Parse); |
| 31 | + var floatingPointNumberFilter = new ExpressionFilter<double>(valueType, s => double.Parse(s, CultureInfo.InvariantCulture)); |
31 | 32 | if (valueType.Equals(Tokens.Single))
|
32 | 33 | {
|
33 | 34 | floatingPointNumberFilter.SetExtents(float.MinValue, float.MaxValue);
|
34 | 35 | }
|
35 | 36 | return floatingPointNumberFilter;
|
36 | 37 | }
|
37 |
| - else if (valueType.Equals(Tokens.Currency)) |
| 38 | + if (valueType.Equals(Tokens.Currency)) |
38 | 39 | {
|
39 | 40 | var fixedPointNumberFilter = new ExpressionFilter<decimal>(valueType, VBACurrency.Parse);
|
40 | 41 | fixedPointNumberFilter.SetExtents(VBACurrency.MinValue, VBACurrency.MaxValue);
|
41 | 42 | return fixedPointNumberFilter;
|
42 | 43 | }
|
43 |
| - else if (valueType.Equals(Tokens.Boolean)) |
| 44 | + if (valueType.Equals(Tokens.Boolean)) |
44 | 45 | {
|
45 | 46 | return new ExpressionFilterBoolean();
|
46 | 47 | }
|
47 | 48 |
|
48 |
| - else if (valueType.Equals(Tokens.Date)) |
| 49 | + if (valueType.Equals(Tokens.Date)) |
49 | 50 | {
|
50 | 51 | return new ExpressionFilterDate();
|
51 | 52 | }
|
52 | 53 |
|
53 |
| - return new ExpressionFilter<string>(valueType, (a) => { return a; }); |
| 54 | + return new ExpressionFilter<string>(valueType, a => a); |
54 | 55 | }
|
55 | 56 | }
|
56 | 57 | }
|
0 commit comments