240 //step - if we suppress diagnostics, we won't stop at Attr for flow-analysis |
240 //step - if we suppress diagnostics, we won't stop at Attr for flow-analysis |
241 //related errors, which will allow for more errors to be detected |
241 //related errors, which will allow for more errors to be detected |
242 Log.DiagnosticHandler diagHandler = new Log.DiscardDiagnosticHandler(log); |
242 Log.DiagnosticHandler diagHandler = new Log.DiscardDiagnosticHandler(log); |
243 try { |
243 try { |
244 new AssignAnalyzer() { |
244 new AssignAnalyzer() { |
|
245 Scope enclosedSymbols = new Scope(env.enclClass.sym); |
|
246 @Override |
|
247 public void visitVarDef(JCVariableDecl tree) { |
|
248 enclosedSymbols.enter(tree.sym); |
|
249 super.visitVarDef(tree); |
|
250 } |
245 @Override |
251 @Override |
246 protected boolean trackable(VarSymbol sym) { |
252 protected boolean trackable(VarSymbol sym) { |
247 return !env.info.scope.includes(sym) && |
253 return enclosedSymbols.includes(sym) && |
248 sym.owner.kind == MTH; |
254 sym.owner.kind == MTH; |
249 } |
255 } |
250 }.analyzeTree(env, that); |
256 }.analyzeTree(env, that); |
251 LambdaFlowAnalyzer flowAnalyzer = new LambdaFlowAnalyzer(); |
257 LambdaFlowAnalyzer flowAnalyzer = new LambdaFlowAnalyzer(); |
252 flowAnalyzer.analyzeTree(env, that, make); |
258 flowAnalyzer.analyzeTree(env, that, make); |