3 comments
Comment actions Permalink

Hello Amir,

I don't really see that it is obvious how this feature should work and
how to implement it. It definitely needs more thinking. Let us consider
for example:

class C
{
public int Field;
}

C c = new C(),d = new C();
c.Field = 2; // point of interest
d = c;
d.Field = 3; // should this line be treated as an assignment to Field (it
changes the value of c.Field)?

and so on.

Regards,
Dmitry Shaporenkov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

http://www.intellij.net/tracker/resharper/viewSCR?publicId=10168, of
course



0
Comment actions Permalink

class C
{
public int Field;
}

>
C c = new C();
c.Field = 2; // point of interest
C d = c;
d.Field = 3;

We can extract method and then
C c = new C();
c.Field = 2; // point of interest
ChangeField(c);

ChangeField(C where) {c.Field = 2;}

Which according to the suggestion should and can be traced. So, I guess in
your example the d assignment should be shown too - but ONLY if it is
obvious, so in the following cases it won't...

C d = MakeC(c);
d.field = 2;

C MakeC(C something)
{
if (yoohoo()) return something; else return new C();
}

or even

C MakeC(C something)
{
return something;
}


0

Please sign in to leave a comment.