Program: 70670
Project: 70670
Buggy source:
private static void buildVertexShaderMain(StringBuilder mb,GLProgramInfo info){
  appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
  appendln(mb);
  appendln(mb,"String_Node_Str");
  if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
    appendln(mb,"String_Node_Str");
  }
  appendln(mb);
  RenderingMode mode=info.getMode();
  boolean computeNormals=!info.isSelecting() && info.hasVertexNormals() && info.getShading() != Shading.NONE;
switch (mode) {
case INSTANCED_AFFINES:
    appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
if (computeNormals) {
  appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case INSTANCED_FRAMES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (computeNormals) {
appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case INSTANCED_LINES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
}
if (computeNormals) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
}
appendln(mb);
break;
case INSTANCED_POINTS:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (!info.isSelecting() && info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
break;
case DEFAULT:
case POINTS:
appendln(mb,"String_Node_Str");
if (computeNormals) {
appendln(mb,"String_Node_Str");
}
break;
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
ColorInterpolation cinterp=info.getColorInterpolation();
if (!info.isSelecting() && info.getVertexColorMixing() != ColorMixing.NONE) {
switch (mode) {
case INSTANCED_POINTS:
case INSTANCED_FRAMES:
case INSTANCED_AFFINES:
if (info.hasInstanceColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
 else if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
break;
case INSTANCED_LINES:
if (info.hasLineColors()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
 else if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
break;
case DEFAULT:
case POINTS:
if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
break;
}
}
if (!info.isSelecting()) {
switch (info.getShading()) {
case FLAT:
if (info.numLights() > 0) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals()) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str" + info.numLights() + "String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
case SMOOTH:
case METAL:
if (info.numLights() > 0) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals()) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
break;
case NONE:
break;
}
}
boolean hasTextures=!info.isSelecting() && info.hasVertexTextures() && info.hasTextureMap();
if (hasTextures) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
if (info.numClipPlanes() > 0) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str" + info.numClipPlanes() + "String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
appendln(mb,"String_Node_Str");
}

Fixed version (ground truth):
private static void buildVertexShaderMain(StringBuilder mb,GLProgramInfo info){
  appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
  appendln(mb);
  appendln(mb,"String_Node_Str");
  if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
    appendln(mb,"String_Node_Str");
  }
  appendln(mb);
  RenderingMode mode=info.getMode();
  boolean computeNormals=!info.isSelecting() && info.hasVertexNormals() && info.getShading() != Shading.NONE;
switch (mode) {
case INSTANCED_AFFINES:
    appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
if (computeNormals) {
  appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case INSTANCED_FRAMES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (computeNormals) {
appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case INSTANCED_LINES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
}
if (computeNormals) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
}
appendln(mb);
break;
case INSTANCED_POINTS:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (!info.isSelecting() && info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
break;
case DEFAULT:
case POINTS:
appendln(mb,"String_Node_Str");
if (computeNormals) {
appendln(mb,"String_Node_Str");
}
break;
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
ColorInterpolation cinterp=info.getColorInterpolation();
if (!info.isSelecting() && info.getVertexColorMixing() != ColorMixing.NONE) {
switch (mode) {
case INSTANCED_POINTS:
case INSTANCED_FRAMES:
case INSTANCED_AFFINES:
if (info.hasInstanceColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
 else if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
break;
case INSTANCED_LINES:
if (info.hasLineColors()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineScaleOffset()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
 else if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
break;
case DEFAULT:
case POINTS:
if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
break;
}
}
if (!info.isSelecting()) {
switch (info.getShading()) {
case FLAT:
if (info.numLights() > 0) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals()) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str" + info.numLights() + "String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
case SMOOTH:
case METAL:
if (info.numLights() > 0) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals()) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
break;
case NONE:
break;
}
}
boolean hasTextures=hasTextures(info);
if (hasTextures) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
if (info.numClipPlanes() > 0) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str" + info.numClipPlanes() + "String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
appendln(mb,"String_Node_Str");
}