Move reflection calls until after branches that may mean they're unused

A handful of cases where reflection calls are made prior to branches that
might lead to the results not being used.
This commit is contained in:
Jon Hanna
2015-12-17 18:27:12 +00:00
parent 9d8e59589b
commit dbbe944b19
4 changed files with 17 additions and 22 deletions
@@ -99,10 +99,6 @@ namespace Newtonsoft.Json.Converters
/// <returns>The object value.</returns> /// <returns>The object value.</returns>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{ {
Type t = (ReflectionUtils.IsNullableType(objectType))
? Nullable.GetUnderlyingType(objectType)
: objectType;
if (reader.TokenType == JsonToken.Null) if (reader.TokenType == JsonToken.Null)
{ {
if (!ReflectionUtils.IsNullable(objectType)) if (!ReflectionUtils.IsNullable(objectType))
@@ -131,6 +127,10 @@ namespace Newtonsoft.Json.Converters
throw JsonSerializationException.Create(reader, "Unexpected token parsing binary. Expected String or StartArray, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType)); throw JsonSerializationException.Create(reader, "Unexpected token parsing binary. Expected String or StartArray, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
} }
Type t = (ReflectionUtils.IsNullableType(objectType))
? Nullable.GetUnderlyingType(objectType)
: objectType;
#if !NET20 #if !NET20
if (t.AssignableToTypeName(BinaryTypeName)) if (t.AssignableToTypeName(BinaryTypeName))
{ {
@@ -78,12 +78,6 @@ namespace Newtonsoft.Json.Converters
/// <returns>The object value.</returns> /// <returns>The object value.</returns>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{ {
#if !NET20
Type t = (ReflectionUtils.IsNullableType(objectType))
? Nullable.GetUnderlyingType(objectType)
: objectType;
#endif
if (reader.TokenType == JsonToken.Null) if (reader.TokenType == JsonToken.Null)
{ {
if (!ReflectionUtils.IsNullable(objectType)) if (!ReflectionUtils.IsNullable(objectType))
@@ -118,6 +112,9 @@ namespace Newtonsoft.Json.Converters
} }
#if !NET20 #if !NET20
Type t = (ReflectionUtils.IsNullableType(objectType))
? Nullable.GetUnderlyingType(objectType)
: objectType;
if (t == typeof(DateTimeOffset)) if (t == typeof(DateTimeOffset))
{ {
return new DateTimeOffset(d); return new DateTimeOffset(d);
@@ -80,17 +80,9 @@ namespace Newtonsoft.Json.Converters
/// <returns>The object value.</returns> /// <returns>The object value.</returns>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{ {
bool isNullable = ReflectionUtils.IsNullableType(objectType);
Type t = (isNullable)
? Nullable.GetUnderlyingType(objectType)
: objectType;
ReflectionObject reflectionObject = ReflectionObjectPerType.Get(t);
if (reader.TokenType == JsonToken.Null) if (reader.TokenType == JsonToken.Null)
{ {
if (!isNullable) if (!ReflectionUtils.IsNullableType(objectType))
{ {
throw JsonSerializationException.Create(reader, "Cannot convert null value to KeyValuePair."); throw JsonSerializationException.Create(reader, "Cannot convert null value to KeyValuePair.");
} }
@@ -103,6 +95,12 @@ namespace Newtonsoft.Json.Converters
ReadAndAssert(reader); ReadAndAssert(reader);
Type t = ReflectionUtils.IsNullableType(objectType)
? Nullable.GetUnderlyingType(objectType)
: objectType;
ReflectionObject reflectionObject = ReflectionObjectPerType.Get(t);
while (reader.TokenType == JsonToken.PropertyName) while (reader.TokenType == JsonToken.PropertyName)
{ {
string propertyName = reader.Value.ToString(); string propertyName = reader.Value.ToString();
@@ -106,9 +106,6 @@ namespace Newtonsoft.Json.Converters
/// <returns>The object value.</returns> /// <returns>The object value.</returns>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{ {
bool isNullable = ReflectionUtils.IsNullableType(objectType);
Type t = isNullable ? Nullable.GetUnderlyingType(objectType) : objectType;
if (reader.TokenType == JsonToken.Null) if (reader.TokenType == JsonToken.Null)
{ {
if (!ReflectionUtils.IsNullableType(objectType)) if (!ReflectionUtils.IsNullableType(objectType))
@@ -119,6 +116,9 @@ namespace Newtonsoft.Json.Converters
return null; return null;
} }
bool isNullable = ReflectionUtils.IsNullableType(objectType);
Type t = isNullable ? Nullable.GetUnderlyingType(objectType) : objectType;
try try
{ {
if (reader.TokenType == JsonToken.String) if (reader.TokenType == JsonToken.String)