diff --git a/src/Analyzers/CSharp/Analyzers/CSharpAnalyzers.projitems b/src/Analyzers/CSharp/Analyzers/CSharpAnalyzers.projitems
index b098d8577794f..59d6797ff1281 100644
--- a/src/Analyzers/CSharp/Analyzers/CSharpAnalyzers.projitems
+++ b/src/Analyzers/CSharp/Analyzers/CSharpAnalyzers.projitems
@@ -35,6 +35,7 @@
+
diff --git a/src/Features/CSharp/Portable/UseAutoProperty/CSharpUseAutoPropertyAnalyzer.cs b/src/Analyzers/CSharp/Analyzers/UseAutoProperty/CSharpUseAutoPropertyAnalyzer.cs
similarity index 100%
rename from src/Features/CSharp/Portable/UseAutoProperty/CSharpUseAutoPropertyAnalyzer.cs
rename to src/Analyzers/CSharp/Analyzers/UseAutoProperty/CSharpUseAutoPropertyAnalyzer.cs
diff --git a/src/Analyzers/CSharp/Tests/CSharpAnalyzers.UnitTests.projitems b/src/Analyzers/CSharp/Tests/CSharpAnalyzers.UnitTests.projitems
index b136fcae4927b..3e7f5b5670388 100644
--- a/src/Analyzers/CSharp/Tests/CSharpAnalyzers.UnitTests.projitems
+++ b/src/Analyzers/CSharp/Tests/CSharpAnalyzers.UnitTests.projitems
@@ -21,6 +21,7 @@
+
diff --git a/src/EditorFeatures/CSharpTest/UseAutoProperty/UseAutoPropertyTests.cs b/src/Analyzers/CSharp/Tests/UseAutoProperty/UseAutoPropertyTests.cs
similarity index 99%
rename from src/EditorFeatures/CSharpTest/UseAutoProperty/UseAutoPropertyTests.cs
rename to src/Analyzers/CSharp/Tests/UseAutoProperty/UseAutoPropertyTests.cs
index 1e1e46f6f5768..62eb6973eb9d5 100644
--- a/src/EditorFeatures/CSharpTest/UseAutoProperty/UseAutoPropertyTests.cs
+++ b/src/Analyzers/CSharp/Tests/UseAutoProperty/UseAutoPropertyTests.cs
@@ -18,7 +18,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.UseAutoProperty
public class UseAutoPropertyTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
{
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
- => (new CSharpUseAutoPropertyAnalyzer(), new CSharpUseAutoPropertyCodeFixProvider());
+ => (new CSharpUseAutoPropertyAnalyzer(), GetCSharpUseAutoPropertyCodeFixProvider());
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseAutoProperty)]
public async Task TestSingleGetterFromField()
diff --git a/src/Analyzers/Core/Analyzers/Analyzers.projitems b/src/Analyzers/Core/Analyzers/Analyzers.projitems
index c198a0748106c..3684c2471dc55 100644
--- a/src/Analyzers/Core/Analyzers/Analyzers.projitems
+++ b/src/Analyzers/Core/Analyzers/Analyzers.projitems
@@ -47,6 +47,7 @@
+
diff --git a/src/Analyzers/Core/Analyzers/AnalyzersResources.resx b/src/Analyzers/Core/Analyzers/AnalyzersResources.resx
index 92bc8c7b5634a..f043c1ef3b20a 100644
--- a/src/Analyzers/Core/Analyzers/AnalyzersResources.resx
+++ b/src/Analyzers/Core/Analyzers/AnalyzersResources.resx
@@ -277,6 +277,9 @@
Use null propagation
+
+ Use auto property
+
Format string contains invalid placeholder
diff --git a/src/Features/Core/Portable/UseAutoProperty/AbstractUseAutoPropertyAnalyzer.cs b/src/Analyzers/Core/Analyzers/UseAutoProperty/AbstractUseAutoPropertyAnalyzer.cs
similarity index 98%
rename from src/Features/Core/Portable/UseAutoProperty/AbstractUseAutoPropertyAnalyzer.cs
rename to src/Analyzers/Core/Analyzers/UseAutoProperty/AbstractUseAutoPropertyAnalyzer.cs
index bbb0a401c6a9f..094bacf67fb3b 100644
--- a/src/Features/Core/Portable/UseAutoProperty/AbstractUseAutoPropertyAnalyzer.cs
+++ b/src/Analyzers/Core/Analyzers/UseAutoProperty/AbstractUseAutoPropertyAnalyzer.cs
@@ -20,8 +20,8 @@ internal abstract class AbstractUseAutoPropertyAnalyzer<
where TExpression : SyntaxNode
{
private static readonly LocalizableString s_title =
- new LocalizableResourceString(nameof(FeaturesResources.Use_auto_property),
- FeaturesResources.ResourceManager, typeof(FeaturesResources));
+ new LocalizableResourceString(nameof(AnalyzersResources.Use_auto_property),
+ AnalyzersResources.ResourceManager, typeof(AnalyzersResources));
protected AbstractUseAutoPropertyAnalyzer()
: base(IDEDiagnosticIds.UseAutoPropertyDiagnosticId, CodeStyleOptions2.PreferAutoProperties, s_title, s_title)
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.cs.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.cs.xlf
index 0602b871aaa9e..e46fe7f78cf08 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.cs.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.cs.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.de.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.de.xlf
index 5c66de0c38e22..4532f45f1c1a7 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.de.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.de.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.es.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.es.xlf
index 2dbdf2efcbe1a..875fe930be3f6 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.es.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.es.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.fr.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.fr.xlf
index 52d47926cf7d4..d2b94d84d5b1b 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.fr.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.fr.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.it.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.it.xlf
index a60565429d12a..7e437daa88869 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.it.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.it.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ja.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ja.xlf
index 712ff4dec8529..c2de060559807 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ja.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ja.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ko.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ko.xlf
index bd87341de835d..69d75e23ea708 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ko.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ko.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pl.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pl.xlf
index 4cfd07329b3d3..a763fa547b7e0 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pl.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pl.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pt-BR.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pt-BR.xlf
index 187469f24da65..e3ef971a8ab2b 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pt-BR.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.pt-BR.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ru.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ru.xlf
index cc63674d3c364..a86919711df1e 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ru.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.ru.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.tr.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.tr.xlf
index e066a1c832420..5414790241e59 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.tr.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.tr.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hans.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hans.xlf
index 8da7c01b2acf5..57d199ef14116 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hans.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hans.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hant.xlf b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hant.xlf
index 64ef51a016dbd..3c43ea97cae07 100644
--- a/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hant.xlf
+++ b/src/Analyzers/Core/Analyzers/xlf/AnalyzersResources.zh-Hant.xlf
@@ -257,6 +257,11 @@
Use 'System.HashCode'
+
+ Use auto property
+ Use auto property
+
+ Use coalesce expressionUse coalesce expression
diff --git a/src/Features/VisualBasic/Portable/UseAutoProperty/Utilities.vb b/src/Analyzers/VisualBasic/Analyzers/UseAutoProperty/Utilities.vb
similarity index 100%
rename from src/Features/VisualBasic/Portable/UseAutoProperty/Utilities.vb
rename to src/Analyzers/VisualBasic/Analyzers/UseAutoProperty/Utilities.vb
diff --git a/src/Features/VisualBasic/Portable/UseAutoProperty/VisualBasicUseAutoPropertyAnalyzer.vb b/src/Analyzers/VisualBasic/Analyzers/UseAutoProperty/VisualBasicUseAutoPropertyAnalyzer.vb
similarity index 98%
rename from src/Features/VisualBasic/Portable/UseAutoProperty/VisualBasicUseAutoPropertyAnalyzer.vb
rename to src/Analyzers/VisualBasic/Analyzers/UseAutoProperty/VisualBasicUseAutoPropertyAnalyzer.vb
index 208615e8e3186..04643aae93d09 100644
--- a/src/Features/VisualBasic/Portable/UseAutoProperty/VisualBasicUseAutoPropertyAnalyzer.vb
+++ b/src/Analyzers/VisualBasic/Analyzers/UseAutoProperty/VisualBasicUseAutoPropertyAnalyzer.vb
@@ -203,7 +203,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.UseAutoProperty
If node.Kind() = SyntaxKind.IdentifierName Then
Dim symbolInfo = semanticModel.GetSymbolInfo(node)
If field.Equals(symbolInfo.Symbol) Then
- If VisualBasicSemanticFactsService.Instance.IsWrittenTo(semanticModel, node, cancellationToken) Then
+ If DirectCast(node, ExpressionSyntax).IsWrittenTo(semanticModel, cancellationToken) Then
Return True
End If
End If
diff --git a/src/Analyzers/VisualBasic/Analyzers/VisualBasicAnalyzers.projitems b/src/Analyzers/VisualBasic/Analyzers/VisualBasicAnalyzers.projitems
index 33fdc5bced9e4..b849a18aa9733 100644
--- a/src/Analyzers/VisualBasic/Analyzers/VisualBasicAnalyzers.projitems
+++ b/src/Analyzers/VisualBasic/Analyzers/VisualBasicAnalyzers.projitems
@@ -28,6 +28,8 @@
+
+
diff --git a/src/EditorFeatures/VisualBasicTest/UseAutoProperty/UseAutoPropertyTests.vb b/src/Analyzers/VisualBasic/Tests/UseAutoProperty/UseAutoPropertyTests.vb
similarity index 99%
rename from src/EditorFeatures/VisualBasicTest/UseAutoProperty/UseAutoPropertyTests.vb
rename to src/Analyzers/VisualBasic/Tests/UseAutoProperty/UseAutoPropertyTests.vb
index d5fc588f83512..a3921c1fd9cd1 100644
--- a/src/EditorFeatures/VisualBasicTest/UseAutoProperty/UseAutoPropertyTests.vb
+++ b/src/Analyzers/VisualBasic/Tests/UseAutoProperty/UseAutoPropertyTests.vb
@@ -13,7 +13,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.UseAutoProperty
Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest
Friend Overrides Function CreateDiagnosticProviderAndFixer(workspace As Workspace) As (DiagnosticAnalyzer, CodeFixProvider)
- Return (New VisualBasicUseAutoPropertyAnalyzer(), New VisualBasicUseAutoPropertyCodeFixProvider())
+ Return (New VisualBasicUseAutoPropertyAnalyzer(), GetVisualBasicUseAutoPropertyCodeFixProvider())
End Function
diff --git a/src/Analyzers/VisualBasic/Tests/VisualBasicAnalyzers.UnitTests.projitems b/src/Analyzers/VisualBasic/Tests/VisualBasicAnalyzers.UnitTests.projitems
index 0cc6c8c979947..f1cbba47f6e7f 100644
--- a/src/Analyzers/VisualBasic/Tests/VisualBasicAnalyzers.UnitTests.projitems
+++ b/src/Analyzers/VisualBasic/Tests/VisualBasicAnalyzers.UnitTests.projitems
@@ -30,6 +30,7 @@
+
diff --git a/src/EditorFeatures/DiagnosticsTestUtilities/Diagnostics/AbstractDiagnosticProviderBasedUserDiagnosticTest.cs b/src/EditorFeatures/DiagnosticsTestUtilities/Diagnostics/AbstractDiagnosticProviderBasedUserDiagnosticTest.cs
index 0783856819ff1..56ce2ac511b24 100644
--- a/src/EditorFeatures/DiagnosticsTestUtilities/Diagnostics/AbstractDiagnosticProviderBasedUserDiagnosticTest.cs
+++ b/src/EditorFeatures/DiagnosticsTestUtilities/Diagnostics/AbstractDiagnosticProviderBasedUserDiagnosticTest.cs
@@ -10,11 +10,13 @@
using Microsoft.CodeAnalysis.CodeActions;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.CSharp.MakeLocalFunctionStatic;
+using Microsoft.CodeAnalysis.CSharp.UseAutoProperty;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Text;
using Microsoft.CodeAnalysis.UnitTests.Diagnostics;
+using Microsoft.CodeAnalysis.VisualBasic.UseAutoProperty;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
using Xunit;
@@ -238,6 +240,12 @@ private void AssertNoAnalyzerExceptionDiagnostics(IEnumerable diagno
// https://github.com/dotnet/roslyn/issues/43056 blocks porting the fixer to CodeStyle layer.
protected static CodeFixProvider GetMakeLocalFunctionStaticCodeFixProvider() => new MakeLocalFunctionStaticCodeFixProvider();
+ // https://github.com/dotnet/roslyn/issues/43091 blocks porting the fixer to CodeStyle layer.
+ protected static CodeFixProvider GetCSharpUseAutoPropertyCodeFixProvider() => new CSharpUseAutoPropertyCodeFixProvider();
+
+ // https://github.com/dotnet/roslyn/issues/43091 blocks porting the fixer to CodeStyle layer.
+ protected static CodeFixProvider GetVisualBasicUseAutoPropertyCodeFixProvider() => new VisualBasicUseAutoPropertyCodeFixProvider();
+
#endregion
}
}
diff --git a/src/Features/Core/Portable/FeaturesResources.resx b/src/Features/Core/Portable/FeaturesResources.resx
index 63ccb6befb600..8d56816216db3 100644
--- a/src/Features/Core/Portable/FeaturesResources.resx
+++ b/src/Features/Core/Portable/FeaturesResources.resx
@@ -816,9 +816,6 @@ Do you want to continue?
attribute
-
- Use auto property
-
Replace '{0}' and '{1}' with property
diff --git a/src/Features/Core/Portable/UseAutoProperty/AbstractUseAutoPropertyCodeFixProvider.cs b/src/Features/Core/Portable/UseAutoProperty/AbstractUseAutoPropertyCodeFixProvider.cs
index bce391fefa882..227d2c0be09e4 100644
--- a/src/Features/Core/Portable/UseAutoProperty/AbstractUseAutoPropertyCodeFixProvider.cs
+++ b/src/Features/Core/Portable/UseAutoProperty/AbstractUseAutoPropertyCodeFixProvider.cs
@@ -55,7 +55,7 @@ public sealed override Task RegisterCodeFixesAsync(CodeFixContext context)
context.RegisterCodeFix(
new UseAutoPropertyCodeAction(
- FeaturesResources.Use_auto_property,
+ AnalyzersResources.Use_auto_property,
c => ProcessResultAsync(context, diagnostic, c),
priority),
diagnostic);
@@ -334,7 +334,7 @@ private static bool IsWrittenToOutsideOfConstructorOrProperty(
return true;
}
- private class UseAutoPropertyCodeAction : CodeAction.SolutionChangeAction
+ private class UseAutoPropertyCodeAction : CustomCodeActions.SolutionChangeAction
{
public UseAutoPropertyCodeAction(string title, Func> createChangedSolution, CodeActionPriority priority)
: base(title, createChangedSolution, title)
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.cs.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.cs.xlf
index 08502c0045fe7..ecf0449132ea5 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.cs.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.cs.xlf
@@ -1683,11 +1683,6 @@ Chcete pokračovat?
atribut
-
- Use auto property
- Použít automatickou vlastnost
-
- Replace '{0}' and '{1}' with propertyNahradit {0} a {1} vlastností
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.de.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.de.xlf
index 86bd8b2e93715..693f75165b349 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.de.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.de.xlf
@@ -1683,11 +1683,6 @@ Möchten Sie fortfahren?
Attribut
-
- Use auto property
- Automatisch generierte Eigenschaft verwenden
-
- Replace '{0}' and '{1}' with property"{0}" und "{1}" durch Eigenschaft ersetzen
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.es.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.es.xlf
index 21deb00787ab3..915760513dac1 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.es.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.es.xlf
@@ -1683,11 +1683,6 @@ Do you want to continue?
atributo
-
- Use auto property
- Usar propiedad automática
-
- Replace '{0}' and '{1}' with propertyReemplazar '{0}' y '{1}' por la propiedad
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.fr.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.fr.xlf
index a64604bef4def..787780f5d89e4 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.fr.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.fr.xlf
@@ -1683,11 +1683,6 @@ Voulez-vous continuer ?
attribut
-
- Use auto property
- Utiliser auto-property
-
- Replace '{0}' and '{1}' with propertyRemplacer '{0}' et '{1}' par une propriété
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.it.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.it.xlf
index 85ddfbf829a97..4761afb03d8ef 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.it.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.it.xlf
@@ -1683,11 +1683,6 @@ Continuare?
attributo
-
- Use auto property
- Usa la proprietà automatica
-
- Replace '{0}' and '{1}' with propertySostituisci '{0}' e '{1}' con la proprietà
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.ja.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.ja.xlf
index 9486fd3b89860..a3a0ef9f3b0bc 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.ja.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.ja.xlf
@@ -1683,11 +1683,6 @@ Do you want to continue?
属性
-
- Use auto property
- 自動プロパティを使用する
-
- Replace '{0}' and '{1}' with property{0}' および '{1}' をプロパティと置換する
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.ko.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.ko.xlf
index b81da35212037..bb549d10126e0 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.ko.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.ko.xlf
@@ -1683,11 +1683,6 @@ Do you want to continue?
특성
-
- Use auto property
- auto 속성 사용
-
- Replace '{0}' and '{1}' with property속성으로 '{0}' 및 '{1}' 바꾸기
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.pl.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.pl.xlf
index c8f4f07497108..deec1c5cb22d7 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.pl.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.pl.xlf
@@ -1683,11 +1683,6 @@ Czy chcesz kontynuować?
atrybut
-
- Use auto property
- Użyj właściwości automatycznej
-
- Replace '{0}' and '{1}' with propertyZastąp elementy „{0}” i „{1}” właściwością
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.pt-BR.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.pt-BR.xlf
index 1409e8d461128..2557777f95f2b 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.pt-BR.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.pt-BR.xlf
@@ -1683,11 +1683,6 @@ Deseja continuar?
atributo
-
- Use auto property
- Usar a propriedade auto
-
- Replace '{0}' and '{1}' with propertySubstituir "{0}" e "{1}" por propriedades
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.ru.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.ru.xlf
index 98c93f39ca77b..e19a88530b8eb 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.ru.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.ru.xlf
@@ -1683,11 +1683,6 @@ Do you want to continue?
атрибут
-
- Use auto property
- Использовать свойство auto
-
- Replace '{0}' and '{1}' with propertyЗаменить "{0}" и "{1}" свойством
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.tr.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.tr.xlf
index a87ca95862207..0472c37e2295d 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.tr.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.tr.xlf
@@ -1683,11 +1683,6 @@ Devam etmek istiyor musunuz?
öznitelik
-
- Use auto property
- Otomatik özellik kullan
-
- Replace '{0}' and '{1}' with property{0}' ve '{1}' öğesini özellikle değiştir
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hans.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hans.xlf
index d017be9f851be..5bab026ca3681 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hans.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hans.xlf
@@ -1683,11 +1683,6 @@ Do you want to continue?
属性
-
- Use auto property
- 使用自动属性
-
- Replace '{0}' and '{1}' with property使用属性替代“{0}”和“{1}”
diff --git a/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hant.xlf b/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hant.xlf
index 577b3d2489c91..c150a94c79007 100644
--- a/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hant.xlf
+++ b/src/Features/Core/Portable/xlf/FeaturesResources.zh-Hant.xlf
@@ -1683,11 +1683,6 @@ Do you want to continue?
屬性
-
- Use auto property
- 使用 Auto 屬性
-
- Replace '{0}' and '{1}' with property以屬性取代 '{0}' 和 '{1}'
diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb
index 711cf977e1e1b..65bbb1f3a2b86 100644
--- a/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb
+++ b/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb
@@ -219,5 +219,127 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Return OperatorPrecedence.PrecedenceNone
End Select
End Function
+
+
+ Public Function IsInOutContext(expression As ExpressionSyntax) As Boolean
+ ' NOTE(cyrusn): VB has no concept of an out context. Even when a parameter has an
+ ' '' attribute on it, it's still treated as ref by VB. So we always return false
+ ' here.
+ Return False
+ End Function
+
+
+ Public Function IsInRefContext(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
+ Dim simpleArgument = TryCast(expression?.Parent, SimpleArgumentSyntax)
+
+ If simpleArgument Is Nothing Then
+ Return False
+ ElseIf simpleArgument.IsNamed Then
+ Dim info = semanticModel.GetSymbolInfo(simpleArgument.NameColonEquals.Name, cancellationToken)
+
+ Dim parameter = TryCast(info.GetAnySymbol(), IParameterSymbol)
+ Return parameter IsNot Nothing AndAlso parameter.RefKind <> RefKind.None
+
+ Else
+ Dim argumentList = TryCast(simpleArgument.Parent, ArgumentListSyntax)
+
+ If argumentList IsNot Nothing Then
+ Dim parent = argumentList.Parent
+ Dim index = argumentList.Arguments.IndexOf(simpleArgument)
+
+ Dim info = semanticModel.GetSymbolInfo(parent, cancellationToken)
+ Dim symbol = info.GetAnySymbol()
+
+ If TypeOf symbol Is IMethodSymbol Then
+ Dim method = DirectCast(symbol, IMethodSymbol)
+ If index < method.Parameters.Length Then
+ Return method.Parameters(index).RefKind <> RefKind.None
+ End If
+ ElseIf TypeOf symbol Is IPropertySymbol Then
+ Dim prop = DirectCast(symbol, IPropertySymbol)
+ If index < prop.Parameters.Length Then
+ Return prop.Parameters(index).RefKind <> RefKind.None
+ End If
+ End If
+ End If
+
+ End If
+
+ Return False
+ End Function
+
+
+ Public Function IsInInContext(expression As ExpressionSyntax) As Boolean
+ ' NOTE: VB does not support in parameters. Always return False here.
+ Return False
+ End Function
+
+
+ Public Function IsOnlyWrittenTo(expression As ExpressionSyntax) As Boolean
+ If expression.IsRightSideOfDot() Then
+ expression = TryCast(expression.Parent, ExpressionSyntax)
+ End If
+
+ If expression IsNot Nothing Then
+ If expression.IsInOutContext() Then
+ Return True
+ End If
+
+ If expression.IsParentKind(SyntaxKind.SimpleAssignmentStatement) Then
+ Dim assignmentStatement = DirectCast(expression.Parent, AssignmentStatementSyntax)
+ If expression Is assignmentStatement.Left Then
+ Return True
+ End If
+ End If
+
+ If expression.IsParentKind(SyntaxKind.NameColonEquals) AndAlso
+ expression.Parent.IsParentKind(SyntaxKind.SimpleArgument) Then
+
+ '
+ ' this is only a write to Prop
+ Return True
+ End If
+
+ If expression.IsChildNode(Of NamedFieldInitializerSyntax)(Function(n) n.Name) Then
+ Return True
+ End If
+
+ Return False
+ End If
+
+ Return False
+ End Function
+
+
+ Public Function IsWrittenTo(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
+ If IsOnlyWrittenTo(expression) Then
+ Return True
+ End If
+
+ If expression.IsRightSideOfDot() Then
+ expression = TryCast(expression.Parent, ExpressionSyntax)
+ End If
+
+ If expression IsNot Nothing Then
+ If expression.IsInRefContext(semanticModel, cancellationToken) Then
+ Return True
+ End If
+
+ If TypeOf expression.Parent Is AssignmentStatementSyntax Then
+ Dim assignmentStatement = DirectCast(expression.Parent, AssignmentStatementSyntax)
+ If expression Is assignmentStatement.Left Then
+ Return True
+ End If
+ End If
+
+ If expression.IsChildNode(Of NamedFieldInitializerSyntax)(Function(n) n.Name) Then
+ Return True
+ End If
+
+ Return False
+ End If
+
+ Return False
+ End Function
End Module
End Namespace
diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb
index c9b8cd9b44697..745a4116756e0 100644
--- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb
+++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ExpressionSyntaxExtensions.vb
@@ -213,128 +213,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
DirectCast(expression, ObjectCreationExpressionSyntax).ArgumentList Is Nothing
End Function
-
- Public Function IsInOutContext(expression As ExpressionSyntax) As Boolean
- ' NOTE(cyrusn): VB has no concept of an out context. Even when a parameter has an
- ' '' attribute on it, it's still treated as ref by VB. So we always return false
- ' here.
- Return False
- End Function
-
-
- Public Function IsInRefContext(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
- Dim simpleArgument = TryCast(expression?.Parent, SimpleArgumentSyntax)
-
- If simpleArgument Is Nothing Then
- Return False
- ElseIf simpleArgument.IsNamed Then
- Dim info = semanticModel.GetSymbolInfo(simpleArgument.NameColonEquals.Name, cancellationToken)
-
- Dim parameter = TryCast(info.GetAnySymbol(), IParameterSymbol)
- Return parameter IsNot Nothing AndAlso parameter.RefKind <> RefKind.None
-
- Else
- Dim argumentList = TryCast(simpleArgument.Parent, ArgumentListSyntax)
-
- If argumentList IsNot Nothing Then
- Dim parent = argumentList.Parent
- Dim index = argumentList.Arguments.IndexOf(simpleArgument)
-
- Dim info = semanticModel.GetSymbolInfo(parent, cancellationToken)
- Dim symbol = info.GetAnySymbol()
-
- If TypeOf symbol Is IMethodSymbol Then
- Dim method = DirectCast(symbol, IMethodSymbol)
- If index < method.Parameters.Length Then
- Return method.Parameters(index).RefKind <> RefKind.None
- End If
- ElseIf TypeOf symbol Is IPropertySymbol Then
- Dim prop = DirectCast(symbol, IPropertySymbol)
- If index < prop.Parameters.Length Then
- Return prop.Parameters(index).RefKind <> RefKind.None
- End If
- End If
- End If
-
- End If
-
- Return False
- End Function
-
-
- Public Function IsInInContext(expression As ExpressionSyntax) As Boolean
- ' NOTE: VB does not support in parameters. Always return False here.
- Return False
- End Function
-
-
- Public Function IsOnlyWrittenTo(expression As ExpressionSyntax) As Boolean
- If expression.IsRightSideOfDot() Then
- expression = TryCast(expression.Parent, ExpressionSyntax)
- End If
-
- If expression IsNot Nothing Then
- If expression.IsInOutContext() Then
- Return True
- End If
-
- If expression.IsParentKind(SyntaxKind.SimpleAssignmentStatement) Then
- Dim assignmentStatement = DirectCast(expression.Parent, AssignmentStatementSyntax)
- If expression Is assignmentStatement.Left Then
- Return True
- End If
- End If
-
- If expression.IsParentKind(SyntaxKind.NameColonEquals) AndAlso
- expression.Parent.IsParentKind(SyntaxKind.SimpleArgument) Then
-
- '
- ' this is only a write to Prop
- Return True
- End If
-
- If expression.IsChildNode(Of NamedFieldInitializerSyntax)(Function(n) n.Name) Then
- Return True
- End If
-
- Return False
- End If
-
- Return False
- End Function
-
-
- Public Function IsWrittenTo(expression As ExpressionSyntax, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Boolean
- If IsOnlyWrittenTo(expression) Then
- Return True
- End If
-
- If expression.IsRightSideOfDot() Then
- expression = TryCast(expression.Parent, ExpressionSyntax)
- End If
-
- If expression IsNot Nothing Then
- If expression.IsInRefContext(semanticModel, cancellationToken) Then
- Return True
- End If
-
- If TypeOf expression.Parent Is AssignmentStatementSyntax Then
- Dim assignmentStatement = DirectCast(expression.Parent, AssignmentStatementSyntax)
- If expression Is assignmentStatement.Left Then
- Return True
- End If
- End If
-
- If expression.IsChildNode(Of NamedFieldInitializerSyntax)(Function(n) n.Name) Then
- Return True
- End If
-
- Return False
- End If
-
- Return False
- End Function
-
Public Function IsMeMyBaseOrMyClass(expression As ExpressionSyntax) As Boolean
If expression Is Nothing Then