private static void parseUnionVariable(
JCTree.JCVariableDecl vd,
int preferredPos,
Source src,
JCTree typeTree,
String vName,
Range nameRange,
JCTree.JCTypeUnion union) {
for (JCTree.JCExpression expression : union.getTypeAlternatives()) {
String type = expression.toString();
Variable variable = new Variable(vName, preferredPos, nameRange);
type = src.getImportedClassFQCN(type, type);
if (vd.getTag().equals(JCTree.Tag.VARDEF)) {
variable.isDef = true;
}
String typeSym = typeTree.toString();
boolean markUnUse = requireImport(src, typeSym, type);
log.trace("typeSym:{} type:{} markUnuse:{}", typeSym, type, markUnUse);
if (nonNull(type)) {
variable.fqcn = TreeAnalyzer.markFQCN(src, type, markUnUse);
src.getCurrentScope()
.ifPresent(
scope -> {
scope.addVariable(variable);
addSymbolIndex(src, scope, variable);
});
}
}
}