Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 550fe0f

Browse files
committed
Merge branch 'envdte-nrefactory'
2 parents d4cc86d + b76a134 commit 550fe0f

117 files changed

Lines changed: 5496 additions & 7614 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,35 @@ public override void AddField(ITypeDefinition declaringType, Accessibility acces
144144
}
145145
}
146146

147+
public override void AddFieldAtStart(ITypeDefinition declaringType, Accessibility accessibility, IType fieldType, string name)
148+
{
149+
SDRefactoringContext context = declaringType.CreateRefactoringContext();
150+
var typeDecl = context.GetNode<TypeDeclaration>();
151+
using (var script = context.StartScript()) {
152+
var astBuilder = context.CreateTypeSystemAstBuilder(typeDecl.FirstChild);
153+
var fieldDecl = new FieldDeclaration();
154+
fieldDecl.Modifiers = TypeSystemAstBuilder.ModifierFromAccessibility(accessibility);
155+
fieldDecl.ReturnType = astBuilder.ConvertType(context.Compilation.Import(fieldType));
156+
fieldDecl.Variables.Add(new VariableInitializer(name));
157+
158+
script.AddTo(typeDecl, fieldDecl);
159+
}
160+
}
161+
162+
public override void AddMethodAtStart(ITypeDefinition declaringType, Accessibility accessibility, IType returnType, string name)
163+
{
164+
SDRefactoringContext context = declaringType.CreateRefactoringContext();
165+
var typeDecl = context.GetNode<TypeDeclaration>();
166+
using (var script = context.StartScript()) {
167+
var astBuilder = context.CreateTypeSystemAstBuilder(typeDecl.FirstChild);
168+
var methodDecl = new MethodDeclaration();
169+
methodDecl.Name = name;
170+
methodDecl.ReturnType = astBuilder.ConvertType(context.Compilation.Import(returnType));
171+
172+
script.AddTo(typeDecl, methodDecl);
173+
}
174+
}
175+
147176
public override void ChangeAccessibility(IEntity entity, Accessibility newAccessiblity)
148177
{
149178
// TODO script.ChangeModifiers(...)
@@ -159,5 +188,25 @@ public override void AddImport(FileName fileName, string namespaceName)
159188
UsingHelper.InsertUsing(context, script, ns);
160189
}
161190
}
191+
192+
public override void MakePartial(ITypeDefinition td)
193+
{
194+
SDRefactoringContext refactoringContext = td.CreateRefactoringContext();
195+
var typeDeclaration = refactoringContext.GetNode<TypeDeclaration>();
196+
197+
using (Script script = refactoringContext.StartScript()) {
198+
script.ChangeModifier(typeDeclaration, typeDeclaration.Modifiers | Modifiers.Partial);
199+
}
200+
}
201+
202+
public override void MakeVirtual(IMember member)
203+
{
204+
SDRefactoringContext refactoringContext = member.CreateRefactoringContext();
205+
var entityDeclaration = refactoringContext.GetNode<EntityDeclaration>();
206+
207+
using (Script script = refactoringContext.StartScript()) {
208+
script.ChangeModifier(entityDeclaration, entityDeclaration.Modifiers | Modifiers.Virtual);
209+
}
210+
}
162211
}
163212
}

src/AddIns/BackendBindings/CSharpBinding/Tests/CSharpCodeGeneratorTests.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,16 @@
1616
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1717
// DEALINGS IN THE SOFTWARE.
1818

19+
using System.Threading;
20+
using System.Threading.Tasks;
1921
using CSharpBinding.Completion;
2022
using CSharpBinding.Parser;
2123
using CSharpBinding.Refactoring;
2224
using ICSharpCode.AvalonEdit.Document;
25+
using ICSharpCode.Core;
2326
using ICSharpCode.NRefactory;
2427
using ICSharpCode.NRefactory.CSharp;
28+
using ICSharpCode.NRefactory.Editor;
2529
using ICSharpCode.NRefactory.TypeSystem;
2630
using ICSharpCode.NRefactory.TypeSystem.Implementation;
2731
using ICSharpCode.SharpDevelop;
@@ -325,6 +329,47 @@ public int TargetC_ {
325329
}
326330
}
327331
332+
interface TargetInterface
333+
{
334+
}
335+
", textEditor.Document.Text);
336+
}
337+
338+
[Test]
339+
public void MakeClassPartial()
340+
{
341+
SD.ParserService.Stub(p => p.ParseAsync(
342+
Arg<FileName>.Is.Equal(textEditor.FileName),
343+
Arg<ITextSource>.Is.Equal(textEditor.TextEditor.Document),
344+
Arg<IProject>.Is.Null,
345+
Arg<CancellationToken>.Is.Anything))
346+
.Return(new Task<ParseInformation>(() => SD.ParserService.GetCachedParseInformation(textEditor.FileName)));
347+
var compilation = SD.ParserService.GetCompilationForFile(textEditor.FileName);
348+
var entity = FindEntity<ITypeDefinition>("TargetClass");
349+
gen.MakePartial(entity);
350+
351+
Assert.AreEqual(@"using System;
352+
using System.Reflection;
353+
354+
[assembly: AssemblyTitle(""CSharpBinding.Tests"")]
355+
356+
class MySimpleAttribute : Attribute {}
357+
358+
partial class TargetClass
359+
{
360+
void TargetA()
361+
{
362+
}
363+
364+
public int TargetB { get; set; }
365+
366+
public int TargetC_ {
367+
get {
368+
return 0;
369+
}
370+
}
371+
}
372+
328373
interface TargetInterface
329374
{
330375
}

src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,12 @@ UpdatedPackages CreateUpdatedPackages(IPackageRepository repository)
200200
if (project != null) {
201201
return new UpdatedPackages(project, repository);
202202
}
203-
return new UpdatedPackages(GetSolutionPackages(), repository);
203+
return new UpdatedPackages(GetPackagesInstalledIntoAnyProject(), repository);
204204
}
205205

206-
IQueryable<IPackage> GetSolutionPackages()
206+
IQueryable<IPackage> GetPackagesInstalledIntoAnyProject()
207207
{
208-
return ConsoleHost.Solution.GetPackages();
208+
return ConsoleHost.Solution.GetInstalledPackages();
209209
}
210210

211211
IPackageManagementProject GetSelectedProject(IPackageRepository repository)
@@ -223,17 +223,17 @@ bool HasSelectedProjectName()
223223

224224
IQueryable<IPackage> GetInstalledPackages()
225225
{
226-
IQueryable<IPackage> packages = GetPackagesFromSelectedProjectOrSolution();
226+
IQueryable<IPackage> packages = GetPackagesFromSelectedProjectOrPackagesFolder();
227227
return FilterPackages(packages);
228228
}
229229

230-
IQueryable<IPackage> GetPackagesFromSelectedProjectOrSolution()
230+
IQueryable<IPackage> GetPackagesFromSelectedProjectOrPackagesFolder()
231231
{
232232
IPackageManagementProject project = GetSelectedProject();
233233
if (project != null) {
234234
return project.GetPackages();
235235
}
236-
return GetSolutionPackages();
236+
return ConsoleHost.Solution.GetPackages();
237237
}
238238

239239
IPackageManagementProject GetSelectedProject()

src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
using NuGet;
2424
using NUnit.Framework;
2525
using PackageManagement.Cmdlets.Tests.Helpers;
26-
using PackageManagement.Tests.Helpers;
2726

2827
namespace PackageManagement.Cmdlets.Tests
2928
{
@@ -715,5 +714,19 @@ public void ProcessRecord_ListAvailablePackagesAndAllVersionsAndTwoVersionsOfSam
715714
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
716715
CollectionAssert.AreEqual(expectedPackages, actualPackages);
717716
}
717+
718+
[Test]
719+
public void ProcessRecord_NoParametersPassedAndPackageOnlyInPackagesFolder_ReturnsPackageInPackagesFolder()
720+
{
721+
CreateCmdlet();
722+
FakePackage package = FakePackage.CreatePackageWithVersion("One", "1.0");
723+
fakeSolution.PackagesOnlyInPackagesFolder.Add(package);
724+
725+
RunCmdlet();
726+
727+
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
728+
List<FakePackage> expectedPackages = fakeSolution.PackagesOnlyInPackagesFolder;
729+
Assert.AreEqual(expectedPackages, actualPackages);
730+
}
718731
}
719732
}

src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,23 +81,22 @@
8181
</Compile>
8282
<Compile Include="Configuration\AssemblyInfo.cs" />
8383
<Compile Include="Src\AcceptLicensesEventArgs.cs" />
84-
<Compile Include="Src\ClassCodeGenerator.cs" />
85-
<Compile Include="Src\ClassKindUpdater.cs" />
8684
<Compile Include="Src\ConfigSettingsFileSystem.cs" />
8785
<Compile Include="Src\DependentFile.cs" />
8886
<Compile Include="Src\Design\DesignTimeSelectProjectsViewModel.cs" />
8987
<Compile Include="Src\Design\FakePackageOperation.cs" />
9088
<Compile Include="Src\Design\FakeProjectBuilder.cs" />
9189
<Compile Include="Src\Design\FakeSelectedProject.cs" />
9290
<Compile Include="Src\DocumentLoader.cs" />
93-
<Compile Include="Src\DomRegionExtensions.cs" />
91+
<Compile Include="Src\DocumentView.cs" />
9492
<Compile Include="Src\EnvDTE\CodeAttribute.cs" />
9593
<Compile Include="Src\EnvDTE\CodeAttribute2.cs" />
9694
<Compile Include="Src\EnvDTE\CodeAttributeArgument.cs" />
9795
<Compile Include="Src\EnvDTE\CodeClass.cs" />
9896
<Compile Include="Src\EnvDTE\CodeClass2.cs" />
9997
<Compile Include="Src\EnvDTE\CodeDelegate.cs" />
10098
<Compile Include="Src\EnvDTE\CodeElement.cs" />
99+
<Compile Include="Src\EnvDTE\CodeElementsInNamespace.cs" />
101100
<Compile Include="Src\EnvDTE\CodeElementsList.cs" />
102101
<Compile Include="Src\EnvDTE\CodeFunction.cs" />
103102
<Compile Include="Src\EnvDTE\CodeFunction2.cs" />
@@ -128,6 +127,7 @@
128127
<Compile Include="Src\EnvDTE\ImplementedInterfacesOnClass.cs" />
129128
<Compile Include="Src\EnvDTE\IParameterExtensions.cs" />
130129
<Compile Include="Src\EnvDTE\IReturnTypeExtensions.cs" />
130+
<Compile Include="Src\EnvDTE\NamespaceName.cs" />
131131
<Compile Include="Src\EnvDTE\ProjectKind.cs" />
132132
<Compile Include="Src\EnvDTE\Projects.cs" />
133133
<Compile Include="Src\EnvDTE\Reference3.cs" />
@@ -149,7 +149,8 @@
149149
<SubType>Code</SubType>
150150
</Compile>
151151
<Compile Include="Src\FileConflictViewModel.cs" />
152-
<Compile Include="Src\IClassKindUpdater.cs" />
152+
<Compile Include="Src\ICodeGenerator.cs" />
153+
<Compile Include="Src\IDocumentView.cs" />
153154
<Compile Include="Src\IPackageRepositoryFactoryEvents.cs" />
154155
<Compile Include="Src\IPackageViewModelParent.cs" />
155156
<Compile Include="Src\IUpdatePackagesAction.cs" />
@@ -158,12 +159,9 @@
158159
<Compile Include="Src\IProjectBuilder.cs" />
159160
<Compile Include="Src\IProjectContentExtensions.cs" />
160161
<Compile Include="Src\IUpdatePackageSettings.cs" />
161-
<Compile Include="Src\IVirtualMethodUpdater.cs" />
162162
<Compile Include="Src\IProjectBrowserUpdater.cs" />
163-
<Compile Include="Src\IRefactoringDocumentView.cs" />
164163
<Compile Include="Src\IFieldExtensions.cs" />
165164
<Compile Include="Src\IDocumentLoader.cs" />
166-
<Compile Include="Src\IMethodOrPropertyExtensions.cs" />
167165
<Compile Include="Src\InstalledPackageViewModel.cs" />
168166
<Compile Include="Src\InstalledPackageViewModelFactory.cs" />
169167
<Compile Include="Src\IPackageManagementSelectedProject.cs" />
@@ -255,6 +253,7 @@
255253
<Compile Include="Src\ServiceWithWorkbenchOwner.cs" />
256254
<Compile Include="Src\SharpDevelopCredentialProvider.cs" />
257255
<Compile Include="Src\SharpDevelopHttpUserAgent.cs" />
256+
<Compile Include="Src\ThreadSafeCodeGenerator.cs" />
258257
<Compile Include="Src\UpdatePackagesAction.cs" />
259258
<Compile Include="Src\UpdatePackagesActionFactory.cs" />
260259
<Compile Include="Src\UpdateSolutionPackagesAction.cs" />
@@ -290,7 +289,6 @@
290289
<Compile Include="Src\ProjectBrowserUpdater.cs" />
291290
<Compile Include="Src\ProjectTemplatePackageRepositoryCache.cs" />
292291
<Compile Include="Src\ProjectTemplatePackagesSettingsFileName.cs" />
293-
<Compile Include="Src\RefactoringDocumentView.cs" />
294292
<Compile Include="Src\RegisteredPackageRepositories.cs" />
295293
<Compile Include="Src\ManagePackagesView.cs">
296294
<DependentUpon>ManagePackagesView.xaml</DependentUpon>

0 commit comments

Comments
 (0)