public boolean hasArrayInfo() { return getArrayInfo() != null; }
private Optional<Integer> maybeGetArrayCount(VariableDeclInfo vdi) { if (vdi.hasArrayInfo()) { return Optional.of(vdi.getArrayInfo().getSize()); } return Optional.empty(); }
@Override public void visitVariablesDeclaration(VariablesDeclaration variablesDeclaration) { visit(variablesDeclaration.getBaseType()); List<VariableDeclInfo> children = new ArrayList<>(); children.addAll(variablesDeclaration.getDeclInfos()); for (VariableDeclInfo declInfo : children) { visitVariableDeclInfo(declInfo); currentScope.add(declInfo.getName(), declInfo.getArrayInfo() == null ? variablesDeclaration.getBaseType() : new ArrayType(variablesDeclaration.getBaseType(), declInfo.getArrayInfo()), Optional.empty(), declInfo, variablesDeclaration); visitVariableDeclInfoAfterAddedToScope(declInfo); } }
@Override public void visitVariablesDeclaration(VariablesDeclaration variablesDeclaration) { final Type baseType = variablesDeclaration.getBaseType(); visit(baseType); out.append(" "); boolean first = true; for (VariableDeclInfo vdi : variablesDeclaration.getDeclInfos()) { if (!first) { out.append(", "); } first = false; out.append(vdi.getName()); if (vdi.hasArrayInfo()) { out.append("[" + vdi.getArrayInfo().getSize() + "]"); assert !(baseType instanceof ArrayType); } else if (baseType instanceof ArrayType) { out.append("[" + ((ArrayType) baseType).getArrayInfo().getSize() + "]"); } if (vdi.hasInitializer()) { out.append(" = "); visit(vdi.getInitializer()); } } }
@Override public void visitVariableDeclInfo(VariableDeclInfo variableDeclInfo) { if (variableDeclInfo.hasArrayInfo()) { visitChildFromParent(this::visitArrayInfo, variableDeclInfo.getArrayInfo(), variableDeclInfo); } if (variableDeclInfo.hasInitializer()) { visitChildFromParent(variableDeclInfo.getInitializer(), variableDeclInfo); } }
arrayLength = vdi.getArrayInfo().getSize(); } else { arrayLength = 1;
declInfo.setInitializer(makeInitializer( withoutQualifiers, declInfo.getArrayInfo(), uniformsInfo.getArgs(uniformName))); final VariablesDeclaration newVariablesDeclaration = new VariablesDeclaration( withoutQualifiers, declInfo);
for (VariableDeclInfo declInfo : globals.getDeclInfos()) { fuzzingContext.addGlobal(declInfo.getName(), getType(globals.getBaseType(), declInfo.getArrayInfo()));