未验证 提交 3e5b1b19 编写于 作者: H Heejae Chang 提交者: GitHub

made all VersionStamp constructor to share initialization and argument validation. (#32713)

this is so that we don't get this kind of issue (https://github.com/dotnet/roslyn/issues/31928) by throwing argument exception invalid argument is given
上级 f516b8b7
......@@ -1031,5 +1031,27 @@ public async Task TestLinkedFilesStayInSync()
Assert.Equal(updatedText, (await eventArgs[1].NewSolution.GetDocument(originalDocumentId).GetTextAsync().ConfigureAwait(false)).ToString());
}
}
[Fact, WorkItem(31928, "https://github.com/dotnet/roslyn/issues/31928")]
public void TestVersionStamp_Local()
{
// only Utc is allowed
Assert.Throws<ArgumentException>(() => VersionStamp.Create(DateTime.Now));
}
[Fact]
public void TestVersionStamp_Default()
{
var version1 = VersionStamp.Create(default);
var version2 = VersionStamp.Create(default);
var version3 = version1.GetNewerVersion(version2);
Assert.Equal(version3, version2);
var version4 = version1.GetNewerVersion();
var version5 = version4.GetNewerVersion(version3);
Assert.Equal(version5, version4);
}
}
}
......@@ -44,15 +44,16 @@ private VersionStamp(DateTime utcLastModified)
}
private VersionStamp(DateTime utcLastModified, int localIncrement)
: this(utcLastModified, localIncrement, GetNextGlobalVersion())
{
_utcLastModified = utcLastModified;
_localIncrement = localIncrement;
_globalIncrement = GetNextGlobalVersion();
}
private VersionStamp(DateTime utcLastModified, int localIncrement, int globalIncrement)
{
Contract.ThrowIfFalse(utcLastModified == default || utcLastModified.Kind == DateTimeKind.Utc);
if (utcLastModified != default && utcLastModified.Kind != DateTimeKind.Utc)
{
throw new ArgumentException(WorkspacesResources.DateTimeKind_must_be_Utc, nameof(utcLastModified));
}
_utcLastModified = utcLastModified;
_localIncrement = localIncrement;
......
......@@ -10,7 +10,6 @@
namespace Microsoft.CodeAnalysis {
using System;
using System.Reflection;
/// <summary>
......@@ -20,7 +19,7 @@ namespace Microsoft.CodeAnalysis {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class WorkspacesResources {
......@@ -40,7 +39,7 @@ internal class WorkspacesResources {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.CodeAnalysis.WorkspacesResources", typeof(WorkspacesResources).GetTypeInfo().Assembly);
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.CodeAnalysis.WorkspacesResources", typeof(WorkspacesResources).Assembly);
resourceMan = temp;
}
return resourceMan;
......@@ -593,6 +592,15 @@ internal class WorkspacesResources {
}
}
/// <summary>
/// Looks up a localized string similar to DateTimeKind must be Utc.
/// </summary>
internal static string DateTimeKind_must_be_Utc {
get {
return ResourceManager.GetString("DateTimeKind_must_be_Utc", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Delegate.
/// </summary>
......
......@@ -807,4 +807,7 @@
<data name="Parameter_preferences" xml:space="preserve">
<value>Parameter preferences</value>
</data>
<data name="DateTimeKind_must_be_Utc" xml:space="preserve">
<value>DateTimeKind must be Utc</value>
</data>
</root>
\ No newline at end of file
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
......@@ -22,6 +22,11 @@
<target state="new">Core EditorConfig Options</target>
<note />
</trans-unit>
<trans-unit id="DateTimeKind_must_be_Utc">
<source>DateTimeKind must be Utc</source>
<target state="new">DateTimeKind must be Utc</target>
<note />
</trans-unit>
<trans-unit id="Expression_level_preferences">
<source>Expression-level preferences</source>
<target state="new">Expression-level preferences</target>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册