diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs index ee3302b0..d746cf13 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs @@ -9753,6 +9753,14 @@ Path '', line 1, position 1."); } } #endif + + [Test] + public void ParametrizedConstructor_IncompleteJson() + { + string s = @"{""text"":""s"",""cursorPosition"":189,""dataSource"":""json_northwind"","; + + ExceptionAssert.Throws(() => JsonConvert.DeserializeObject(s), "Unexpected end when deserializing object. Path 'dataSource', line 1, position 63."); + } } public class DerivedWithPrivate : BaseWithPrivate @@ -9912,4 +9920,20 @@ Path '', line 1, position 1."); z = 3; } } + + public class CompletionDataRequest + { + public CompletionDataRequest(string text, int cursorPosition, string dataSource, string project) + { + Text = text; + CursorPosition = cursorPosition; + DataSource = dataSource; + Project = project; + } + + public string Text { get; } + public int CursorPosition { get; } + public string DataSource { get; } + public string Project { get; } + } } \ No newline at end of file diff --git a/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs b/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs index 36f0e9fa..0cd31eb1 100644 --- a/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs +++ b/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs @@ -2194,6 +2194,11 @@ namespace Newtonsoft.Json.Serialization } } while (!exit && reader.Read()); + if (!exit) + { + ThrowUnexpectedEndException(reader, contract, null, "Unexpected end when deserializing object."); + } + return propertyValues; }