-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Offer to add parameter to constructor with no existing parameters #33624
Conversation
IMethodSymbol constructor, | ||
ImmutableArray<string> parametersName) | ||
{ | ||
var constructorParams = constructor.Parameters; | ||
return constructorParams.Length > 0 | ||
&& constructorParams.All(parameter => parameter.RefKind == RefKind.None) | ||
if (constructorParams.Length <= 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the length of array can't be less than 0, ==
is sufficient.
This comment needs update as well Refers to: src/Features/Core/Portable/AddConstructorParametersFromMembers/AddConstructorParametersFromMembersCodeRefactoringProvider.State.cs:81 in 817e29d. [](commit_id = 817e29d, deletion_comment = False) |
&& constructorParams.All(parameter => parameter.RefKind == RefKind.None) | ||
if (constructorParams.Length <= 0) | ||
{ | ||
return !constructor.IsImplicitlyDeclared; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the behavior if we only have an implicit default ctor? Refactoring will not be available?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, i would prefer it's avialable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See this: #33624 (comment)
|
||
[WorkItem(33602, "https://github.com/dotnet/roslyn/issues/33602")] | ||
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsAddConstructorParametersFromMembers)] | ||
public async Task TestConstructorWithNoParameters() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we also have a test with only implicit default ctor?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, we have this test:
class C
{
[|int i;|]
int Hello { get; set; }
}
{ | ||
[|int i;|] | ||
int Hello { get; set; } | ||
}"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
probably shoudl offer to create an explicit constructor here since hte implicit one def exists.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "generate constructor" refactoring is offered here, and it will generate the constructor with the selected field as a parameter.
The "add parameters to constructor" is not offered, but I think that is expected.
* dotnet/master: (903 commits) Add UseEnhancedColors to FeatureOnOffOptionsProvider (dotnet#33802) Update TypeStyle.cs Text on a InterpolatedVerbatimStringStartToken token (dotnet#33747) added ability to clear all diagnostics reproted from a IDiagnosticUpd… (dotnet#33805) Use a set instead of map to define processed redundant nodes. EnC: Remove dependency on solution from AnalyzeDocumentAsync (dotnet#33796) Add workitem links to new redundant assignment tests. Move leading trivia with node when removing unused values. Remove OOP related feature options. (dotnet#31644) Merge pull request dotnet#33631 from CyrusNajmabadi/wrapPriority Use the correct iteration count in IterationDataAttribute Handle interface members in NullableWalker.AsMemberOfType (dotnet#33764) Cleanly work around microsoft/nodejstools#2138 Implement full spec changes for Index/Range (dotnet#33679) Further reduce expectations on deep fluent calls Lower expectation for deep fluent call Take screenshot after writing logs Avoid throwing exception in static constructor Offer to add parameter to constructor with no existing parameters (dotnet#33624) Add regression test for nullable crash (dotnet#33735) ...
Fixes #33602