diff --git a/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj b/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj
index d80b902..c8f2950 100644
--- a/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj
+++ b/AsyncConverter.Tests/AsyncConverter.Rider.Tests.csproj
@@ -30,6 +30,6 @@
-
+
\ No newline at end of file
diff --git a/AsyncConverter.Tests/AsyncConverter.Tests.csproj b/AsyncConverter.Tests/AsyncConverter.Tests.csproj
index e7b4d0f..e79316f 100644
--- a/AsyncConverter.Tests/AsyncConverter.Tests.csproj
+++ b/AsyncConverter.Tests/AsyncConverter.Tests.csproj
@@ -26,7 +26,7 @@
-
+
diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitOnTestTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitOnTestTests.cs
new file mode 100644
index 0000000..bc724dd
--- /dev/null
+++ b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitOnTestTests.cs
@@ -0,0 +1,11 @@
+using AsyncConverter.Settings.General;
+using JetBrains.ReSharper.TestFramework;
+
+namespace AsyncConverter.Tests.Highlightings
+{
+ [TestSetting(typeof(GeneralSettings), nameof(GeneralSettings.ExcludeTestMethodsFromConfigureAwait), false)]
+ public class ConfigureAwaitOnTestTests : HighlightingsTestsBase
+ {
+ protected override string Folder => "ConfigureAwait/OnTest";
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitTests.cs
new file mode 100644
index 0000000..b061a48
--- /dev/null
+++ b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitTests.cs
@@ -0,0 +1,7 @@
+namespace AsyncConverter.Tests.Highlightings
+{
+ public class ConfigureAwaitTests : HighlightingsTestsBase
+ {
+ protected override string Folder => "ConfigureAwait/Common";
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwaitWithAttributeTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitWithAttributeTests.cs
similarity index 79%
rename from AsyncConverter.Tests/Highlightings/ConfigureAwaitWithAttributeTests.cs
rename to AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitWithAttributeTests.cs
index fa48e4a..9d50f4a 100644
--- a/AsyncConverter.Tests/Highlightings/ConfigureAwaitWithAttributeTests.cs
+++ b/AsyncConverter.Tests/Highlightings/ConfigureAwait/ConfigureAwaitWithAttributeTests.cs
@@ -1,4 +1,4 @@
-using AsyncConverter.Settings.ConfigureAwaitOptions;
+using AsyncConverter.Settings.ConfigureAwaitOptions;
using JetBrains.Application.Settings;
namespace AsyncConverter.Tests.Highlightings
@@ -9,6 +9,6 @@ protected override void MutateSettings(IContextBoundSettingsStore settingsStore)
{
settingsStore.SetIndexedValue((AsyncConverterConfigureAwaitSettings s) => s.ConfigureAwaitIgnoreAttributeTypes, "MyCustomAttribute", "AsyncConverter.Tests.Test.Data.Highlightings.ConfigureAwaitWithAttribute.MyCustomAttribute");
}
- protected override string Folder => "ConfigureAwaitWithAttribute";
+ protected override string Folder => "ConfigureAwait/WithAttribute";
}
}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Highlightings/ConfigureAwaitTests.cs b/AsyncConverter.Tests/Highlightings/ConfigureAwaitTests.cs
deleted file mode 100644
index 445c0d9..0000000
--- a/AsyncConverter.Tests/Highlightings/ConfigureAwaitTests.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace AsyncConverter.Tests.Highlightings
-{
- public class ConfigureAwaitTests : HighlightingsTestsBase
- {
- protected override string Folder => "ConfigureAwait";
- }
-}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs
new file mode 100644
index 0000000..f8a7bbe
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Microsoft.VisualStudio.TestTools.UnitTesting;
+ public class Class
+ {
+ [TestMethod]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace Microsoft.VisualStudio.TestTools.UnitTesting
+{
+ public class TestMethodAttribute : Attribute
+ { }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs.gold
new file mode 100644
index 0000000..2171058
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/MsTestAttr.cs.gold
@@ -0,0 +1,22 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Microsoft.VisualStudio.TestTools.UnitTesting;
+ public class Class
+ {
+ [TestMethod]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace Microsoft.VisualStudio.TestTools.UnitTesting
+{
+ public class TestMethodAttribute : Attribute
+ { }
+}
+---------------------------------------------------------
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs
new file mode 100644
index 0000000..59df8bd
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [Test]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestAttribute : Attribute
+ { }
+}
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs.gold
new file mode 100644
index 0000000..3a77abf
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithAttributeOnClass.cs.gold
@@ -0,0 +1,23 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [Test]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestAttribute : Attribute
+ { }
+}
+
+---------------------------------------------------------
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs.gold
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithFalse.cs.gold
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithFalse.cs.gold
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs.gold
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithTrue.cs.gold
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/WithTrue.cs.gold
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs.gold
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Without.cs.gold
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/Common/Without.cs.gold
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs
new file mode 100644
index 0000000..f8a7bbe
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Microsoft.VisualStudio.TestTools.UnitTesting;
+ public class Class
+ {
+ [TestMethod]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace Microsoft.VisualStudio.TestTools.UnitTesting
+{
+ public class TestMethodAttribute : Attribute
+ { }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs.gold
new file mode 100644
index 0000000..cc498ba
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/MsTestAttr.cs.gold
@@ -0,0 +1,23 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Microsoft.VisualStudio.TestTools.UnitTesting;
+ public class Class
+ {
+ [TestMethod]
+ public async Task Test()
+ {
+ |await Task.Delay(1000)|(0);
+ }
+ }
+}
+
+namespace Microsoft.VisualStudio.TestTools.UnitTesting
+{
+ public class TestMethodAttribute : Attribute
+ { }
+}
+---------------------------------------------------------
+(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured'
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs
new file mode 100644
index 0000000..8e0b648
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [Test]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestAttribute : Attribute
+ { }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs.gold
new file mode 100644
index 0000000..c8018dd
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestAttr.cs.gold
@@ -0,0 +1,23 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [Test]
+ public async Task Test()
+ {
+ |await Task.Delay(1000)|(0);
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestAttribute : Attribute
+ { }
+}
+---------------------------------------------------------
+(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured'
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs
new file mode 100644
index 0000000..9ed6e2c
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [TestCase]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestCaseAttribute : Attribute
+ { }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs.gold
new file mode 100644
index 0000000..aaafe95
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/NUnitTestCaseAttr.cs.gold
@@ -0,0 +1,23 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [TestCase]
+ public async Task Test()
+ {
+ |await Task.Delay(1000)|(0);
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestCaseAttribute : Attribute
+ { }
+}
+---------------------------------------------------------
+(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured'
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs
new file mode 100644
index 0000000..5b96cf6
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Xunit;
+ public class Class
+ {
+ [Fact]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace Xunit
+{
+ public class FactAttribute : Attribute
+ { }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs.gold
new file mode 100644
index 0000000..4213673
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitFactAttr.cs.gold
@@ -0,0 +1,23 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Xunit;
+ public class Class
+ {
+ [Fact]
+ public async Task Test()
+ {
+ |await Task.Delay(1000)|(0);
+ }
+ }
+}
+
+namespace Xunit
+{
+ public class FactAttribute : Attribute
+ { }
+}
+---------------------------------------------------------
+(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured'
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs
new file mode 100644
index 0000000..1963956
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Xunit;
+ public class Class
+ {
+ [Theory]
+ public async Task Test()
+ {
+ await Task.Delay(1000);
+ }
+ }
+}
+
+namespace Xunit
+{
+ public class TheoryAttribute : Attribute
+ { }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs.gold
new file mode 100644
index 0000000..5be9601
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/OnTest/XunitTheoryAttr.cs.gold
@@ -0,0 +1,23 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using Xunit;
+ public class Class
+ {
+ [Theory]
+ public async Task Test()
+ {
+ |await Task.Delay(1000)|(0);
+ }
+ }
+}
+
+namespace Xunit
+{
+ public class TheoryAttribute : Attribute
+ { }
+}
+---------------------------------------------------------
+(0): ReSharper Warning: (T) 'If await not configured it may cause deadlock, if this code will be call synchronously' (E) 'Await not configured'
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs.gold
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnClass.cs.gold
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnClass.cs.gold
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs.gold
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithAttributeOnMethod.cs.gold
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithAttributeOnMethod.cs.gold
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs.gold
similarity index 100%
rename from AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwaitWithAttribute/WithoutAttribute.cs.gold
rename to AsyncConverter.Tests/Test/Data/Highlightings/ConfigureAwait/WithAttribute/WithoutAttribute.cs.gold
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs
new file mode 100644
index 0000000..8cb55c7
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [TestCaseSource(nameof(FileNames))]
+ public async Task Test()
+ {
+ await Task.Delay(1000).ConfigureAwait(false);
+ await Task.Delay(1000).ConfigureAwait(false);
+ }
+
+ protected TestCaseData[] FileNames()
+ {
+ return new TestCaseData[0];
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestCaseSourceAttribute : Attribute
+ {
+ public TestCaseSourceAttribute(string sourceName)
+ {
+
+ }
+ }
+
+ public class TestCaseData
+ {
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs.gold
new file mode 100644
index 0000000..69baba1
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/Naming/NUnitTestCaseSource.cs.gold
@@ -0,0 +1,38 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [TestCaseSource(nameof(FileNames))]
+ public async Task Test()
+ {
+ await Task.Delay(1000).ConfigureAwait(false);
+ await Task.Delay(1000).ConfigureAwait(false);
+ }
+
+ protected TestCaseData[] FileNames()
+ {
+ return new TestCaseData[0];
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestCaseSourceAttribute : Attribute
+ {
+ public TestCaseSourceAttribute(string |sourceName|(0))
+ {
+
+ }
+ }
+
+ public class TestCaseData
+ {
+ }
+}
+---------------------------------------------------------
+(0): ReSharper Dead Code: Parameter 'sourceName' is never used
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs
new file mode 100644
index 0000000..8cb55c7
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [TestCaseSource(nameof(FileNames))]
+ public async Task Test()
+ {
+ await Task.Delay(1000).ConfigureAwait(false);
+ await Task.Delay(1000).ConfigureAwait(false);
+ }
+
+ protected TestCaseData[] FileNames()
+ {
+ return new TestCaseData[0];
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestCaseSourceAttribute : Attribute
+ {
+ public TestCaseSourceAttribute(string sourceName)
+ {
+
+ }
+ }
+
+ public class TestCaseData
+ {
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs.gold b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs.gold
new file mode 100644
index 0000000..0838bc6
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/Highlightings/NamingWithExcludeTestMethods/NUnitTestCaseSource.cs.gold
@@ -0,0 +1,39 @@
+using System;
+using System.Threading.Tasks;
+
+namespace AsyncConverter.Tests.Test.Data.FixReturnValueToTaskTests
+{
+ using NUnit.Framework;
+ public class Class
+ {
+ [TestCaseSource(nameof(FileNames))]
+ public async Task |Test|(0)()
+ {
+ await Task.Delay(1000).ConfigureAwait(false);
+ await Task.Delay(1000).ConfigureAwait(false);
+ }
+
+ protected TestCaseData[] FileNames()
+ {
+ return new TestCaseData[0];
+ }
+ }
+}
+
+namespace NUnit.Framework
+{
+ public class TestCaseSourceAttribute : Attribute
+ {
+ public TestCaseSourceAttribute(string |sourceName|(1))
+ {
+
+ }
+ }
+
+ public class TestCaseData
+ {
+ }
+}
+---------------------------------------------------------
+(0): ReSharper Warning: (T) '' (E) 'Async method must ends on "Async"'
+(1): ReSharper Dead Code: Parameter 'sourceName' is never used
diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs
new file mode 100644
index 0000000..0a40511
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs
@@ -0,0 +1,11 @@
+namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests
+{
+ public class Class
+ {
+ [CanBeNull]
+ public string {caret}Test()
+ {
+ return 5;
+ }
+ }
+}
diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs.gold b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs.gold
new file mode 100644
index 0000000..f27f48e
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemCanBeNull.cs.gold
@@ -0,0 +1,14 @@
+using System.Threading.Tasks;
+using JetBrains.Annotations;
+
+namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests
+{
+ public class Class
+ {
+ [ItemCanBeNull]
+ public async Task {caret}TestAsync()
+ {
+ return 5;
+ }
+ }
+}
diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs
new file mode 100644
index 0000000..aa130c2
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs
@@ -0,0 +1,11 @@
+namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests
+{
+ public class Class
+ {
+ [NotNull]
+ public string {caret}Test()
+ {
+ return 5;
+ }
+ }
+}
diff --git a/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs.gold b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs.gold
new file mode 100644
index 0000000..437f8e6
--- /dev/null
+++ b/AsyncConverter.Tests/Test/Data/MethodToAsyncConverterTests/AnnotateItemNotNull.cs.gold
@@ -0,0 +1,14 @@
+using System.Threading.Tasks;
+using JetBrains.Annotations;
+
+namespace AsyncConverter.Tests.Test.Data.MethodToAsyncConverterTests
+{
+ public class Class
+ {
+ [ItemNotNull]
+ public async Task {caret}TestAsync()
+ {
+ return 5;
+ }
+ }
+}
diff --git a/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs b/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs
index 5a7db5a..60a3d9b 100644
--- a/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs
+++ b/AsyncConverter/Analyzers/ConfigureAwaitAnalyzer.cs
@@ -1,10 +1,7 @@
-using AsyncConverter.AsyncHelpers.Checker;
-using AsyncConverter.Checkers;
+using AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers;
using AsyncConverter.Highlightings;
using JetBrains.ProjectModel;
-using JetBrains.ReSharper.Feature.Services.CSharp.PostfixTemplates;
using JetBrains.ReSharper.Feature.Services.Daemon;
-using JetBrains.ReSharper.Psi;
using JetBrains.ReSharper.Psi.CSharp.Tree;
using JetBrains.ReSharper.Psi.Tree;
@@ -15,18 +12,9 @@ public class ConfigureAwaitAnalyzer : ElementProblemAnalyzer
{
protected override void Run(IAwaitExpression element, ElementProblemAnalyzerData data, IHighlightingConsumer consumer)
{
- var attributeFunctionChecker = element.GetSolution().GetComponent();
- var attributeTypeChecker = element.GetSolution().GetComponent();
+ var needConfAwaitCheckers = element.GetSolution().GetComponent();
- var declaredType = element.Task?.GetExpressionType() as IDeclaredType;
-
- if (declaredType.IsConfigurableAwaitable() || declaredType.IsGenericConfigurableAwaitable())
- return;
-
- if (attributeFunctionChecker.IsUnder(element))
- return;
-
- if (attributeTypeChecker.IsUnder(element))
+ if(!needConfAwaitCheckers.NeedAdding(element))
return;
consumer.AddHighlighting(new ConfigureAwaitHighlighting(element));
diff --git a/AsyncConverter/AsyncConverter.Rider.csproj b/AsyncConverter/AsyncConverter.Rider.csproj
index 709401b..b01764a 100644
--- a/AsyncConverter/AsyncConverter.Rider.csproj
+++ b/AsyncConverter/AsyncConverter.Rider.csproj
@@ -3,7 +3,7 @@
net461
true
AsyncConverter.Rider
- 1.1.8.10
+ 1.1.8.11
i.mamay
@@ -12,6 +12,7 @@
Plugin for resharper, for converting code to async.
async
https://github.com/BigBabay/AsyncConverter
+ AsyncConverter
bin\Rider\Debug
diff --git a/AsyncConverter/AsyncConverter.csproj b/AsyncConverter/AsyncConverter.csproj
index d253850..aef06d9 100644
--- a/AsyncConverter/AsyncConverter.csproj
+++ b/AsyncConverter/AsyncConverter.csproj
@@ -3,7 +3,7 @@
net461
true
AsyncConverter.AsyncConverter
- 1.1.8.10
+ 1.1.8.11
i.mamay
@@ -25,7 +25,7 @@
-
+
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs b/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs
index 4a18f95..11ceac2 100644
--- a/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs
+++ b/AsyncConverter/AsyncHelpers/AwaitEliders/MethodAwaitElider.cs
@@ -9,7 +9,7 @@ internal class MethodAwaitElider : ICustomAwaitElider
{
public bool CanElide(ICSharpDeclaration declarationOrClosure) => declarationOrClosure is IMethodDeclaration;
- public void Elide(ICSharpDeclaration declarationOrClosure, ICSharpExpression awaitExpression)
+ public void Elide(ICSharpDeclaration declarationOrClosure, ICSharpExpression awaitExpression)
{
var factory = CSharpElementFactory.GetInstance(awaitExpression);
diff --git a/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs b/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs
index 3857023..a201115 100644
--- a/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs
+++ b/AsyncConverter/AsyncHelpers/Checker/AttributeFunctionChecker.cs
@@ -1,10 +1,10 @@
using System.Linq;
using AsyncConverter.Helpers;
using AsyncConverter.Settings;
-using JetBrains.ReSharper.Psi.Tree;
using JetBrains.Application.Settings;
using JetBrains.ProjectModel;
using JetBrains.ReSharper.Psi.CSharp.Tree;
+using JetBrains.ReSharper.Psi.Tree;
using JetBrains.Util;
namespace AsyncConverter.AsyncHelpers.Checker
diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/ConfigureAwaitChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/ConfigureAwaitChecker.cs
new file mode 100644
index 0000000..3cbfc16
--- /dev/null
+++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/ConfigureAwaitChecker.cs
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+using System.Linq;
+using AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers;
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.Psi.CSharp.Tree;
+
+namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers
+{
+ [SolutionComponent]
+ internal class ConfigureAwaitChecker : IConfigureAwaitChecker
+ {
+ private readonly IConfigureAwaitCustomChecker[] awaitCustomCheckers;
+
+ public ConfigureAwaitChecker(IEnumerable awaitCustomCheckers)
+ {
+ this.awaitCustomCheckers = awaitCustomCheckers.ToArray();
+ }
+
+ public bool NeedAdding(IAwaitExpression element)
+ {
+ return awaitCustomCheckers.All(x => x.CanBeAdded(element));
+ }
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeFunctionChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeFunctionChecker.cs
new file mode 100644
index 0000000..4741fe3
--- /dev/null
+++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeFunctionChecker.cs
@@ -0,0 +1,22 @@
+using AsyncConverter.AsyncHelpers.Checker;
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.Psi.CSharp.Tree;
+
+namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers
+{
+ [SolutionComponent]
+ internal class AttributeFunctionChecker: IConfigureAwaitCustomChecker
+ {
+ private readonly IAttributeFunctionChecker attributeFunctionChecker;
+
+ public AttributeFunctionChecker(IAttributeFunctionChecker attributeFunctionChecker)
+ {
+ this.attributeFunctionChecker = attributeFunctionChecker;
+ }
+
+ public bool CanBeAdded(IAwaitExpression element)
+ {
+ return !attributeFunctionChecker.IsUnder(element);
+ }
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeTypeChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeTypeChecker.cs
new file mode 100644
index 0000000..ccc4233
--- /dev/null
+++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/AttributeTypeChecker.cs
@@ -0,0 +1,19 @@
+using AsyncConverter.Checkers;
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.Psi.CSharp.Tree;
+
+namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers
+{
+ [SolutionComponent]
+ class AttributeTypeChecker : IConfigureAwaitCustomChecker
+ {
+ private readonly IAttributeTypeChecker attributeTypeChecker;
+
+ public AttributeTypeChecker(IAttributeTypeChecker attributeTypeChecker)
+ {
+ this.attributeTypeChecker = attributeTypeChecker;
+ }
+
+ public bool CanBeAdded(IAwaitExpression element) => !attributeTypeChecker.IsUnder(element);
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/BaseChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/BaseChecker.cs
new file mode 100644
index 0000000..b2d1139
--- /dev/null
+++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/BaseChecker.cs
@@ -0,0 +1,18 @@
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.Feature.Services.CSharp.PostfixTemplates;
+using JetBrains.ReSharper.Psi;
+using JetBrains.ReSharper.Psi.CSharp.Tree;
+
+namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers
+{
+ [SolutionComponent]
+ internal class BaseChecker : IConfigureAwaitCustomChecker
+ {
+ public bool CanBeAdded(IAwaitExpression element)
+ {
+ var declaredType = element.Task?.GetExpressionType() as IDeclaredType;
+
+ return !declaredType.IsConfigurableAwaitable() && !declaredType.IsGenericConfigurableAwaitable();
+ }
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/IConfigureAwaitCustomChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/IConfigureAwaitCustomChecker.cs
new file mode 100644
index 0000000..f5d5b6d
--- /dev/null
+++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/IConfigureAwaitCustomChecker.cs
@@ -0,0 +1,9 @@
+using JetBrains.ReSharper.Psi.CSharp.Tree;
+
+namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers
+{
+ public interface IConfigureAwaitCustomChecker
+ {
+ bool CanBeAdded(IAwaitExpression element);
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/OnTestChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/OnTestChecker.cs
new file mode 100644
index 0000000..b06b2b3
--- /dev/null
+++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/CustomCheckers/OnTestChecker.cs
@@ -0,0 +1,30 @@
+using AsyncConverter.Checkers;
+using AsyncConverter.Settings;
+using JetBrains.Application.Settings;
+using JetBrains.ProjectModel;
+using JetBrains.ReSharper.Psi.CSharp.Tree;
+using JetBrains.ReSharper.Psi.Tree;
+
+namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers.CustomCheckers
+{
+ [SolutionComponent]
+ internal class OnTestChecker : IConfigureAwaitCustomChecker
+ {
+ private readonly IUnderTestChecker underTestChecker;
+
+ public OnTestChecker(IUnderTestChecker underTestChecker)
+ {
+ this.underTestChecker = underTestChecker;
+ }
+
+ public bool CanBeAdded(IAwaitExpression element)
+ {
+ var excludeTestMethods = element.GetSettingsStore().GetValue(AsyncConverterSettingsAccessor.ExcludeTestMethodsFromConfigureAwait);
+ var methodDeclaration =
+ element.GetContainingTypeMemberDeclarationIgnoringClosures() as IMethodDeclaration;
+ if (methodDeclaration == null)
+ return true;
+ return !excludeTestMethods || !underTestChecker.IsUnder(methodDeclaration);
+ }
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/IConfigureAwaitChecker.cs b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/IConfigureAwaitChecker.cs
new file mode 100644
index 0000000..bb9c346
--- /dev/null
+++ b/AsyncConverter/AsyncHelpers/ConfigureAwaitCheckers/IConfigureAwaitChecker.cs
@@ -0,0 +1,9 @@
+using JetBrains.ReSharper.Psi.CSharp.Tree;
+
+namespace AsyncConverter.AsyncHelpers.ConfigureAwaitCheckers
+{
+ public interface IConfigureAwaitChecker
+ {
+ bool NeedAdding(IAwaitExpression element);
+ }
+}
\ No newline at end of file
diff --git a/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs b/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs
index de76ac7..ba2b713 100644
--- a/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs
+++ b/AsyncConverter/AsyncHelpers/RenameCheckers/ControllerRenameChecker.cs
@@ -1,5 +1,5 @@
-using System.Linq;
-using System.Collections.Generic;
+using System.Collections.Generic;
+using System.Linq;
using JetBrains.Metadata.Reader.Impl;
using JetBrains.ProjectModel;
using JetBrains.ReSharper.Psi;
diff --git a/AsyncConverter/Checkers/UnderTestChecker.cs b/AsyncConverter/Checkers/UnderTestChecker.cs
index 81aa4d8..d93a07d 100644
--- a/AsyncConverter/Checkers/UnderTestChecker.cs
+++ b/AsyncConverter/Checkers/UnderTestChecker.cs
@@ -16,7 +16,8 @@ public class UnderTestChecker : IUnderTestChecker
new ClrTypeName("Xunit.FactAttribute"),
new ClrTypeName("Xunit.TheoryAttribute"),
new ClrTypeName("NUnit.Framework.TestAttribute"),
- new ClrTypeName("NUnit.Framework.TestCaseAttribute")
+ new ClrTypeName("NUnit.Framework.TestCaseAttribute"),
+ new ClrTypeName("NUnit.Framework.TestCaseSourceAttribute"),
};
public bool IsUnder(IMethodDeclaration method) => method.AttributeSectionList != null && method.ContainsAttribute(testAttributesClass);
diff --git a/AsyncConverter/Helpers/AsyncReplacer.cs b/AsyncConverter/Helpers/AsyncReplacer.cs
index 57991b7..f45b254 100644
--- a/AsyncConverter/Helpers/AsyncReplacer.cs
+++ b/AsyncConverter/Helpers/AsyncReplacer.cs
@@ -1,8 +1,11 @@
+using System;
using System.Linq;
using AsyncConverter.AsyncHelpers.AwaitEliders;
using JetBrains.Annotations;
using JetBrains.ProjectModel;
+using JetBrains.ReSharper.Feature.Services.CSharp.Util;
using JetBrains.ReSharper.Psi;
+using JetBrains.ReSharper.Psi.CodeAnnotations;
using JetBrains.ReSharper.Psi.CSharp.Tree;
using JetBrains.ReSharper.Psi.Search;
using JetBrains.ReSharper.Psi.Tree;
@@ -91,6 +94,7 @@ private void ReplaceMethodSignatureToAsync([NotNull] IParametersOwner parameters
if (task == null)
return;
newReturnValue = TypeFactory.CreateType(task, returnType);
+ ChangeJetbrainsAnnotations(methodDeclaration);
}
var name = GenerateAsyncMethodName(methodDeclaration.DeclaredName);
@@ -101,6 +105,35 @@ private void ReplaceMethodSignatureToAsync([NotNull] IParametersOwner parameters
awaitElider.Elide(methodDeclaration);
}
+ private static void ChangeJetbrainsAnnotations([NotNull] IMethodDeclaration methodDeclaration)
+ {
+ var itemCanBeNull = CodeAnnotationsUtil.GetNullabilityCache(methodDeclaration.UserData, methodDeclaration).ItemCanBeNullAnnotation;
+ ChangeAnnotationAttribute(
+ methodDeclaration,
+ "CanBeNull",
+ itemCanBeNull);
+
+ var itemNotNull = CodeAnnotationsUtil.GetNullabilityCache(methodDeclaration.UserData, methodDeclaration).ItemNotNullAnnotation;
+ ChangeAnnotationAttribute(
+ methodDeclaration,
+ "NotNull",
+ itemNotNull);
+ }
+
+ private static void ChangeAnnotationAttribute(IMethodDeclaration methodDeclaration, string toReplace, ITypeElement replacement)
+ {
+ var toReplaceAttribute = methodDeclaration.Attributes
+ .FirstOrDefault(a => string.Compare(a.Name.QualifiedName, toReplace, StringComparison.InvariantCultureIgnoreCase) == 0);
+ if (toReplaceAttribute != null && replacement != null)
+ {
+ var annotation = CSharpAnnotationsUtil.Annotate(methodDeclaration, replacement);
+ if (annotation.Status == CSharpAnnotationsUtil.Status.AnnotationInserted)
+ {
+ methodDeclaration.RemoveAttribute(toReplaceAttribute);
+ }
+ }
+ }
+
private static void SetSignature([NotNull] IMethodDeclaration methodDeclaration, [NotNull] IType newReturnValue, [NotNull] string newName)
{
methodDeclaration.SetType(newReturnValue);
diff --git a/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs b/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs
index 9ee01f1..08d01e3 100644
--- a/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs
+++ b/AsyncConverter/Highlightings/AsyncAwaitMayBeElidedHighlighting.cs
@@ -1,4 +1,5 @@
using AsyncConverter.Highlightings;
+using AsyncConverter.Settings;
using JetBrains.DocumentModel;
using JetBrains.ReSharper.Feature.Services.Daemon;
using JetBrains.ReSharper.Psi.CSharp;
diff --git a/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs b/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs
index bc56682..7dce6df 100644
--- a/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs
+++ b/AsyncConverter/Highlightings/AsyncMethodNamingHighlighting.cs
@@ -1,4 +1,5 @@
using AsyncConverter.Highlightings;
+using AsyncConverter.Settings;
using JetBrains.DocumentModel;
using JetBrains.ReSharper.Feature.Services.Daemon;
using JetBrains.ReSharper.Psi.CSharp;
diff --git a/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs b/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs
index 53c26bf..03b94a4 100644
--- a/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs
+++ b/AsyncConverter/Highlightings/CanBeUseAsyncMethodHighlighting.cs
@@ -1,4 +1,5 @@
using AsyncConverter.Highlightings;
+using AsyncConverter.Settings;
using JetBrains.DocumentModel;
using JetBrains.ReSharper.Feature.Services.Daemon;
using JetBrains.ReSharper.Psi.CSharp;
diff --git a/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs b/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs
index 858e810..760506c 100644
--- a/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs
+++ b/AsyncConverter/Highlightings/ConfigureAwaitHighlighting.cs
@@ -1,4 +1,5 @@
using AsyncConverter.Highlightings;
+using AsyncConverter.Settings;
using JetBrains.DocumentModel;
using JetBrains.ReSharper.Feature.Services.Daemon;
using JetBrains.ReSharper.Psi.CSharp;
diff --git a/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs b/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs
index 5a97b63..bb7dd63 100644
--- a/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs
+++ b/AsyncConverter/Highlightings/NullReturnAsTaskHighlighting.cs
@@ -1,4 +1,5 @@
using AsyncConverter.Highlightings;
+using AsyncConverter.Settings;
using JetBrains.DocumentModel;
using JetBrains.ReSharper.Feature.Services.Daemon;
using JetBrains.ReSharper.Psi;
diff --git a/AsyncConverter/Highlightings/AsyncConverterGroupSettings.cs b/AsyncConverter/Settings/AsyncConverterGroupSettings.cs
similarity index 81%
rename from AsyncConverter/Highlightings/AsyncConverterGroupSettings.cs
rename to AsyncConverter/Settings/AsyncConverterGroupSettings.cs
index 85b4043..12afce1 100644
--- a/AsyncConverter/Highlightings/AsyncConverterGroupSettings.cs
+++ b/AsyncConverter/Settings/AsyncConverterGroupSettings.cs
@@ -1,9 +1,9 @@
-using AsyncConverter.Highlightings;
+using AsyncConverter.Settings;
using JetBrains.ReSharper.Feature.Services.Daemon;
[assembly: RegisterConfigurableHighlightingsGroup(AsyncConverterGroupSettings.Id, AsyncConverterGroupSettings.Name)]
-namespace AsyncConverter.Highlightings
+namespace AsyncConverter.Settings
{
public static class AsyncConverterGroupSettings
{
diff --git a/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs b/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs
index 149fb87..3a0710e 100644
--- a/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs
+++ b/AsyncConverter/Settings/AsyncConverterSettingsAccessor.cs
@@ -17,6 +17,10 @@ public static readonly Expression>
public static readonly Expression>
ExcludeTestMethodsFromEliding = x => x.ExcludeTestMethodsFromEliding;
+ [NotNull]
+ public static readonly Expression>
+ ExcludeTestMethodsFromConfigureAwait = x => x.ExcludeTestMethodsFromConfigureAwait;
+
[NotNull]
public static readonly Expression>>
ConfigureAwaitIgnoreAttributeTypes =
diff --git a/AsyncConverter/Settings/General/GeneralSettings.cs b/AsyncConverter/Settings/General/GeneralSettings.cs
index 238d9d7..ed7093a 100644
--- a/AsyncConverter/Settings/General/GeneralSettings.cs
+++ b/AsyncConverter/Settings/General/GeneralSettings.cs
@@ -10,5 +10,9 @@ public class GeneralSettings
[SettingsEntry(true, "Do not suggest add 'Async' suffix to test method.")]
public bool ExcludeTestMethodsFromRanaming { get; set; }
+
+ [SettingsEntry(true, "Do not suggest add 'ConfigureAwait' into test method.")]
+ public bool ExcludeTestMethodsFromConfigureAwait { get; set; }
+
}
}
\ No newline at end of file
diff --git a/Rider/AsyncConverter.Rider/META-INF/plugin.xml b/Rider/AsyncConverter.Rider/META-INF/plugin.xml
index 95c0110..598dd08 100644
--- a/Rider/AsyncConverter.Rider/META-INF/plugin.xml
+++ b/Rider/AsyncConverter.Rider/META-INF/plugin.xml
@@ -1,8 +1,8 @@
-
+
AsyncConverter.AsyncConverter
AsyncConverter
Plugin for converting code to async.
- 1.1.8.10
+ 1.1.8.11
i.mamay