The article implies some level of flow analysis. Has Walter come around on this 
topic?

As far as considering a variable moved, I believe the following should be 
reasonable
• Any if statement (or else clause) containing a move
• Any switch statement containing a move for any case
• Any fall-through cases where the prior case moved the variable
• Any function call not using a lent argument for the variable
• Moving inside a loop should be illegal

An explicit is null check should be able to bypass these rules. There are 
probably ways to loosen the looping rule such as if there is a way to guarantee 
the moved variable won't be read from again.

Very similar rules can be used for detecting initialization of (unique) 
variables. A variable can be considered initialized if:
• Both the if and else must initialize a variable
• All cases in a switch must initialize a variable
• Out parameter in a function call 
• Loops can't initialize variables
  relaxation: can init if guaranteed to run at least once

Those rules should be sufficiently simple to implement and extremely tolerable 
for programmers.
Inevitably, I missed a case, but I hope the idea is clear, and that whatever I 
overlooked does not add complexity.


Bartosz Milewski Wrote:

> The post is back, rewritten and with some code teasers.
> 
> Nick B Wrote:
> 
> > Hi
> > 
> > It seems that Bartosz's  latest post, dated April 26 th is missing from 
> > his blog.
> > 
> > See :
> > 
> > http://bartoszmilewski.wordpress.com/
> > 
> > 
> > Nick B.
> 

Reply via email to