@Override public boolean visitVariableDefinitionEntry(VariableDefinitionEntry node) { if (mCurrentMethod != null) { if (mLocalVars == null) { mLocalVars = Sets.newHashSet(); } mLocalVars.add(node.astName().astValue()); } else { if (mFields == null) { mFields = Sets.newHashSet(); } mFields.add(node.astName().astValue()); } return super.visitVariableDefinitionEntry(node); }
@Override public boolean visitVariableDefinitionEntry(VariableDefinitionEntry node) { Expression initializer = node.astInitializer(); if (initializer instanceof VariableReference) { JavaParser.ResolvedNode resolved = mContext.resolve(initializer); //noinspection SuspiciousMethodCalls if (resolved != null && mVariables.contains(resolved)) { JavaParser.ResolvedNode resolvedVariable = mContext.resolve(node); if (resolvedVariable instanceof JavaParser.ResolvedVariable) { JavaParser.ResolvedVariable variable = (JavaParser.ResolvedVariable) resolvedVariable; mVariables.add(variable); } } } return super.visitVariableDefinitionEntry(node); }
@Override public boolean visitVariableDefinitionEntry(VariableDefinitionEntry node) { Expression initializer = node.astInitializer(); if (initializer instanceof VariableReference) { ResolvedNode resolved = mContext.resolve(initializer); //noinspection SuspiciousMethodCalls if (resolved != null && mVariables.contains(resolved)) { ResolvedNode resolvedVariable = mContext.resolve(node); if (resolvedVariable instanceof ResolvedVariable) { ResolvedVariable variable = (ResolvedVariable) resolvedVariable; mVariables.add(variable); } else if (resolvedVariable instanceof ResolvedField) { mEscapes = true; } } } return super.visitVariableDefinitionEntry(node); }
@Override public boolean visitVariableDefinitionEntry(VariableDefinitionEntry node) { String name = node.astName().astValue(); Expression rhs = node.astInitializer(); Class<?> type = getType(rhs); if (type != null) { mTypes.put(name, type); } else { // Make sure we're not visiting the String.format node itself. If you have // msg = String.format("%1$s", msg) // then we'd be wiping out the type of "msg" before visiting the // String.format call! if (rhs != mTargetNode) { mTypes.remove(name); } } return super.visitVariableDefinitionEntry(node); }