Browse Source

Merge pull request #167 from leoowen19/master

[CodeIssue] Modified Public Constructor in Abstract Class Issue
pull/32/merge
Mike Krüger 12 years ago
parent
commit
8ed13e2813
  1. 23
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ConstructorIssues/PublicConstructorInAbstractClass.cs
  2. 10
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/PublicConstructorInAbstractClassIssueTest.cs

23
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ConstructorIssues/PublicConstructorInAbstractClass.cs

@ -47,8 +47,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -47,8 +47,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
return new GatherVisitor(context).GetIssues();
}
class GatherVisitor : GatherVisitorBase<StaticConstructorAccessModifierIssue>
class GatherVisitor : GatherVisitorBase<PublicConstructorInAbstractClassIssue>
{
public GatherVisitor(BaseRefactoringContext ctx)
: base(ctx)
{
@ -59,15 +60,19 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -59,15 +60,19 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (!typeDeclaration.HasModifier(Modifiers.Abstract)) {
return;
}
foreach (var constructor in typeDeclaration.Children.OfType<ConstructorDeclaration>()){
VisitConstructorDeclaration(constructor);
}
}
foreach (var child in typeDeclaration.Children.OfType<ConstructorDeclaration>()) {
foreach (var token_ in child.ModifierTokens) {
var token = token_;
if (token.Modifier.Equals(Modifiers.Public)) {
AddIssue(token, ctx.TranslateString("Convert public to protected"), script => {
script.Replace(token, new CSharpModifierToken(TextLocation.Empty, Modifiers.Protected));
});
}
public override void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration)
{
foreach (var token_ in constructorDeclaration.ModifierTokens) {
var token = token_;
if (token.Modifier.Equals(Modifiers.Public)) {
AddIssue(token, ctx.TranslateString("Convert public to protected"), script => {
script.Replace(token, new CSharpModifierToken(TextLocation.Empty, Modifiers.Protected));
});
}
}
}

10
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/PublicConstructorInAbstractClassIssueTest.cs

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
//
// RedundantAssignmentIssueTests.cs
// PublicConstructorInAbstractionClassIssueTests.cs
//
// Author:
// Ji Kun <jikun.nus@gmail.com>
//
// Copyright (c) 2012 Ji Kun
// Copyright (c) 2013 Ji Kun
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -118,19 +118,19 @@ abstract class TestClass @@ -118,19 +118,19 @@ abstract class TestClass
CheckFix(context, issues, output);
}
[Ignore]
[Test]
public void TestResharperDisable()
{
var input = @"
//Resharper disable PublicConstructorInAbstractClass
abstract class TestClass
{
//Resharper disable PublicConstructorInAbstractClass
public TestClass ()
{
}
//Resharper restore PublicConstructorInAbstractClass
}";
}
";
TestRefactoringContext context;
var issues = GetIssues(new PublicConstructorInAbstractClassIssue(), input, out context);

Loading…
Cancel
Save