Browse Source

Support making types partial in CodeGenerator.

pull/375/head
Matt Ward 12 years ago
parent
commit
01f96a64f5
  1. 10
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs
  2. 45
      src/AddIns/BackendBindings/CSharpBinding/Tests/CSharpCodeGeneratorTests.cs

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

@ -159,5 +159,15 @@ namespace CSharpBinding.Refactoring @@ -159,5 +159,15 @@ namespace CSharpBinding.Refactoring
UsingHelper.InsertUsing(context, script, ns);
}
}
public override void MakePartial(ITypeDefinition td)
{
SDRefactoringContext refactoringContext = td.CreateRefactoringContext();
var typeDeclaration = refactoringContext.GetNode<TypeDeclaration>();
using (Script script = refactoringContext.StartScript()) {
script.ChangeModifier(typeDeclaration, typeDeclaration.Modifiers | Modifiers.Partial);
}
}
}
}

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

@ -16,12 +16,16 @@ @@ -16,12 +16,16 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Threading;
using System.Threading.Tasks;
using CSharpBinding.Completion;
using CSharpBinding.Parser;
using CSharpBinding.Refactoring;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.SharpDevelop;
@ -325,6 +329,47 @@ class TargetClass @@ -325,6 +329,47 @@ class TargetClass
}
}
interface TargetInterface
{
}
", textEditor.Document.Text);
}
[Test]
public void MakeClassPartial()
{
SD.ParserService.Stub(p => p.ParseAsync(
Arg<FileName>.Is.Equal(textEditor.FileName),
Arg<ITextSource>.Is.Equal(textEditor.TextEditor.Document),
Arg<IProject>.Is.Null,
Arg<CancellationToken>.Is.Anything))
.Return(new Task<ParseInformation>(() => SD.ParserService.GetCachedParseInformation(textEditor.FileName)));
var compilation = SD.ParserService.GetCompilationForFile(textEditor.FileName);
var entity = FindEntity<ITypeDefinition>("TargetClass");
gen.MakePartial(entity);
Assert.AreEqual(@"using System;
using System.Reflection;
[assembly: AssemblyTitle(""CSharpBinding.Tests"")]
class MySimpleAttribute : Attribute {}
partial class TargetClass
{
void TargetA()
{
}
public int TargetB { get; set; }
public int TargetC_ {
get {
return 0;
}
}
}
interface TargetInterface
{
}

Loading…
Cancel
Save