提交 73e7f643 编写于 作者: I Ivan Basov

foreachtolinq

上级 6c7c773a
......@@ -296,6 +296,15 @@ internal class CSharpFeaturesResources {
}
}
/// <summary>
/// Looks up a localized string similar to Convert to query.
/// </summary>
internal static string Convert_to_query {
get {
return ResourceManager.GetString("Convert_to_query", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Convert to &apos;switch&apos;.
/// </summary>
......
......@@ -524,4 +524,7 @@
<data name="if_statement_can_be_simplified" xml:space="preserve">
<value>'if' statement can be simplified</value>
</data>
<data name="Convert_to_query" xml:space="preserve">
<value>Convert to query</value>
</data>
</root>
\ No newline at end of file
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Dočasná vložená proměnná</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Inline temporär variabel</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Variable temporal en línea</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Variable temporaire inline</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Variabile temporanea inline</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">インラインの一時変数</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ko" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">인라인 임시 변수</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="pl" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Wstawiona zmienna tymczasowa</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="pt-BR" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Variável temporária embutida</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ru" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Встроенная временная переменная</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="tr" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">Satır içi geçici değişken</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">内联临时变量</target>
......
......@@ -2,6 +2,11 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../CSharpFeaturesResources.resx">
<body>
<trans-unit id="Convert_to_query">
<source>Convert to query</source>
<target state="new">Convert to query</target>
<note />
</trans-unit>
<trans-unit id="Inline_temporary_variable">
<source>Inline temporary variable</source>
<target state="translated">內嵌暫存變數</target>
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeActions;
using Microsoft.CodeAnalysis.CodeRefactorings;
using Microsoft.CodeAnalysis.Editing;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Text;
namespace Microsoft.CodeAnalysis.ConvertLinq
{
internal abstract class AbstractConvertForEachToLinqQueryProvider<TForEachStatement, TQueryExpression> : CodeRefactoringProvider
where TForEachStatement : SyntaxNode
where TQueryExpression : SyntaxNode
{
protected abstract string Title { get; }
protected abstract bool TryConvert(
TForEachStatement forEachStatement,
Document document,
SemanticModel semanticModel,
ISemanticFactsService semanticFacts,
CancellationToken cancellationToken,
out SyntaxEditor editor);
protected abstract TForEachStatement FindNodeToRefactor(SyntaxNode root, TextSpan span);
public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context)
{
var document = context.Document;
var cancellationToken = context.CancellationToken;
var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
var forEachStatement = FindNodeToRefactor(root, context.Span);
if (forEachStatement == null)
{
return;
}
var semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);
var semanticFacts = document.GetLanguageService<ISemanticFactsService>();
if (TryConvert(forEachStatement, document, semanticModel, semanticFacts, cancellationToken, out SyntaxEditor editor))
{
context.RegisterRefactoring(
new ForEachToLinqQueryCodeAction(
Title,
c => Task.FromResult(document.WithSyntaxRoot(editor.GetChangedRoot()))));
}
}
private class ForEachToLinqQueryCodeAction : CodeAction.DocumentChangeAction
{
public ForEachToLinqQueryCodeAction(
string title,
Func<CancellationToken, Task<Document>> createChangedDocument) : base(title, createChangedDocument)
{
}
}
}
}
......@@ -55,6 +55,7 @@ public static class Features
public const string CodeActionsConvertForEachToFor = "CodeActions.ConvertForEachToFor";
public const string CodeActionsConvertIfToSwitch = "CodeActions.ConvertIfToSwitch";
public const string CodeActionsConvertQueryToForEach = "CodeActions.ConvertQueryToForEach";
public const string CodeActionsConvertForEachToQuery = "CodeActions.ConvertForEachToQuery";
public const string CodeActionsCorrectExitContinue = "CodeActions.CorrectExitContinue";
public const string CodeActionsCorrectFunctionReturnType = "CodeActions.CorrectFunctionReturnType";
public const string CodeActionsCorrectNextControlVariable = "CodeActions.CorrectNextControlVariable";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册