提交 e92dc6bb 编写于 作者: D Dustin Campbell

Merge remote-tracking branch 'origin/master' into codemodelfixes

......@@ -12,12 +12,12 @@
using Microsoft.CodeAnalysis.CSharp.Utilities;
using Microsoft.CodeAnalysis.Editor.CSharp.Formatting.Indentation;
using Microsoft.CodeAnalysis.Editor.Implementation.Formatting.Indentation;
using Microsoft.CodeAnalysis.Editor.Options;
using Microsoft.CodeAnalysis.Editor.Shared.Options;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Formatting.Rules;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Text;
......@@ -159,6 +159,12 @@ public async Task<IList<TextChange>> GetFormattingChangesAsync(Document document
return null;
}
var service = document.GetLanguageService<ISyntaxFactsService>();
if (service != null && service.IsInNonUserCode(token.SyntaxTree, caretPosition, cancellationToken))
{
return null;
}
// Check to see if the token is ')' and also the parent is a using statement. If not, bail
if (TokenShouldNotFormatOnTypeChar(token))
{
......
......@@ -481,6 +481,364 @@ static void Main(string[] args)
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideSingleLineRegularComment_1()
{
var code = @"class Program
{
// {$$
static void Main(int a, int b)
{
}
}";
var expected = @"class Program
{
// {
static void Main(int a, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideSingleLineRegularComment_2()
{
var code = @"class Program
{
// {$$
static void Main(int a, int b)
{
}
}";
var expected = @"class Program
{
// {
static void Main(int a, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideMultiLineRegularComment_1()
{
var code = @"class Program
{
static void Main(int a/* {$$ */, int b)
{
}
}";
var expected = @"class Program
{
static void Main(int a/* { */, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideMultiLineRegularComment_2()
{
var code = @"class Program
{
static void Main(int a/* {$$
*/, int b)
{
}
}";
var expected = @"class Program
{
static void Main(int a/* {
*/, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideMultiLineRegularComment_3()
{
var code = @"class Program
{
static void Main(int a/* {$$
*/, int b)
{
}
}";
var expected = @"class Program
{
static void Main(int a/* {
*/, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideSingleLineDocComment_1()
{
var code = @"class Program
{
/// {$$
static void Main(int a, int b)
{
}
}";
var expected = @"class Program
{
/// {
static void Main(int a, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideSingleLineDocComment_2()
{
var code = @"class Program
{
/// {$$
static void Main(int a, int b)
{
}
}";
var expected = @"class Program
{
/// {
static void Main(int a, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideMultiLineDocComment_1()
{
var code = @"class Program
{
/** {$$ **/
static void Main(int a, int b)
{
}
}";
var expected = @"class Program
{
/** { **/
static void Main(int a, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideMultiLineDocComment_2()
{
var code = @"class Program
{
/** {$$
**/
static void Main(int a, int b)
{
}
}";
var expected = @"class Program
{
/** {
**/
static void Main(int a, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideMultiLineDocComment_3()
{
var code = @"class Program
{
/** {$$
**/
static void Main(int a, int b)
{
}
}";
var expected = @"class Program
{
/** {
**/
static void Main(int a, int b)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideInactiveCode()
{
var code = @"class Program
{
#if false
{$$
#endif
static void Main(string[] args)
{
}
}";
var expected = @"class Program
{
#if false
{
#endif
static void Main(string[] args)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideStringLiteral()
{
var code = @"class Program
{
static void Main(string[] args)
{
var asdas = ""{$$"" ;
}
}";
var expected = @"class Program
{
static void Main(string[] args)
{
var asdas = ""{"" ;
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideCharLiteral()
{
var code = @"class Program
{
static void Main(string[] args)
{
var asdas = '{$$' ;
}
}";
var expected = @"class Program
{
static void Main(string[] args)
{
var asdas = '{' ;
}
}";
AssertFormatAfterTypeChar(code, expected);
}
[WorkItem(449)]
[WorkItem(1077103)]
[Fact, Trait(Traits.Feature, Traits.Features.Formatting)]
public void NoFormattingInsideCommentsOfPreprocessorDirectves()
{
var code = @"class Program
{
#region
#endregion // a/*{$$*/
static void Main(string[] args)
{
}
}";
var expected = @"class Program
{
#region
#endregion // a/*{*/
static void Main(string[] args)
{
}
}";
AssertFormatAfterTypeChar(code, expected);
}
private static void AssertFormatAfterTypeChar(string code, string expected)
{
using (var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(code))
......
......@@ -112,10 +112,15 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="PerfTests\DebuggerSteppingTestcase.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ImportGroup Label="Targets">
<Import Project="..\..\..\..\Tools\Microsoft.CodeAnalysis.Toolset.Open\Targets\VSL.Imports.targets" />
<Import Project="..\..\..\..\..\build\VSL.Imports.Closed.targets" />
<Import Project="..\..\..\..\..\build\Roslyn.Toolsets.Xunit.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
</ImportGroup>
</Project>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<TaoTest xmlns="http://microsoft.com/schemas/VSLanguages/TAO">
<InitTest>
<StartTarget />
<OpenProject ProjectFile="$(WorkingDir)\..\..\LegacyTest\RealworldProjects\RoslynSolutions\Roslyn.sln" DeleteSuoFileBeforeOpening="true" DeleteIDECacheBeforeOpening="true"/>
</InitTest>
<ScenarioList>
<Scenario Name="Step through Roslyn.sln">
<Log Message="Build and step through source" />
<WaitForIdleCPU/>
<ListenForCodeMarkers ScenarioGroup="Step through Roslyn.sln" Step="Step through Roslyn.sln" TimeGoal="0.1" MemoryGoal="0.9" BeginMarker="StartNow" EndMarker="DebuggerUISlowRefreshComplete"/>
<MeasureTimeStart /><!-- Start timer (Not sure if correct command) -->
<Debug>
<!-- "StepOver" can be replaced with "StepOver", "StepOut", or "StartDebugging" if those would be more relevant -->
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<Debug>
<StepOver waitForBreakOrEnd="true"/>
</Debug>
<WaitForCodeMarkers />
<MeasureTimeStop /><!-- End timer (Not sure if correct command) -->
<Debug>
<StopDebugging />
</Debug>
</Scenario>
</ScenarioList>
<CleanupTest>
<CloseTarget />
</CleanupTest>
</TaoTest>
......@@ -39,13 +39,13 @@
.ver 1:0:0:0
}
.module Microsoft.VisualStudio.Debugger.Engine.dll
// MVID: {A81059ED-E418-4B32-819A-14E58DFBDF45}
// MVID: {D80922F5-B2A1-4BB3-815B-EC4E2582A142}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x04AE0000
// Image base: 0x00D30000
// =============== CLASS MEMBERS DECLARATION ===================
......@@ -38,13 +38,13 @@
.ver 14:0:0:0
}
.module Microsoft.VisualStudio.Debugger.Metadata.dll
// MVID: {784B4937-3996-4C86-A270-B07A99202EF9}
// MVID: {293D431E-EC96-494F-A2E5-39FA3FA6ACD4}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x02DA0000
// Image base: 0x00AE0000
// =============== CLASS MEMBERS DECLARATION ===================
......
[$RootKey$\BindingPaths\{5EABCC64-FDFC-478D-9123-DAE27341DE85}]
"$PackageFolder$"=""
......@@ -191,6 +191,9 @@
<DesignTime>True</DesignTime>
<DependentUpon>VSPackage.resx</DependentUpon>
</Compile>
<Content Include="BindingPath.pkgdef">
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
<Content Include="CSharpPackageRegistration.pkgdef">
<IncludeInVSIX>true</IncludeInVSIX>
</Content>
......@@ -204,4 +207,4 @@
<Import Project="..\..\..\build\VSL.Imports.Closed.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
</ImportGroup>
</Project>
\ No newline at end of file
</Project>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册