Program: 70668
Project: 70668
Buggy source:
private static void buildFragmentShaderMain(StringBuilder mb,GLProgramInfo info){
  RenderingMode mode=info.getMode();
  ColorInterpolation cinterp=info.getColorInterpolation();
  boolean hasTextures=info.hasVertexTextures();
  appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
  if (mode == RenderingMode.POINTS && info.hasRoundPoints()) {
    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");
  }
  boolean lights=false;
  if (!info.isSelecting()) {
    if (info.getShading() != Shading.NONE && info.numLights() > 0) {
      lights=true;
      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");
switch (info.getShading()) {
case FLAT:
        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:
appendln(mb,"String_Node_Str");
if (!info.hasVertexNormals()) {
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,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (hasTextures) {
if (info.hasNormalMap()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
if (info.hasBumpMap()) {
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,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
break;
case NONE:
break;
}
}
 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");
}
boolean hasFragmentColors=(info.getVertexColorMixing() != ColorMixing.NONE) && (info.hasVertexColors() || ((mode == RenderingMode.INSTANCED_POINTS || mode == RenderingMode.INSTANCED_FRAMES || mode == RenderingMode.INSTANCED_AFFINES) && info.hasInstanceColors()) || (mode == RenderingMode.INSTANCED_LINES && info.hasLineColors()));
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
if (hasFragmentColors) {
appendln(mb,"String_Node_Str");
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb,"String_Node_Str");
ColorMixing cmix=info.getVertexColorMixing();
switch (cmix) {
case DECAL:
if (info.isMixVertexColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case MODULATE:
if (info.isMixVertexColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case REPLACE:
if (info.isMixVertexColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case NONE:
appendln(mb,"String_Node_Str");
default :
}
}
if (hasTextures && info.hasColorMap()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
ColorMixing cmix=info.getTextureColorMixing();
switch (cmix) {
case DECAL:
if (info.isMixTextureColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case MODULATE:
if (info.isMixTextureColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case REPLACE:
if (info.isMixTextureColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case NONE:
appendln(mb,"String_Node_Str");
break;
default :
}
appendln(mb);
}
}
if (info.isSelecting()) {
appendln(mb,"String_Node_Str");
}
 else if (lights) {
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");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
appendln(mb,"String_Node_Str");
}

Fixed version (ground truth):
private static void buildFragmentShaderMain(StringBuilder mb,GLProgramInfo info){
  RenderingMode mode=info.getMode();
  ColorInterpolation cinterp=info.getColorInterpolation();
  boolean hasTextures=hasTextures(info);
  appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
  if (mode == RenderingMode.POINTS && info.hasRoundPoints()) {
    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");
  }
  boolean lights=false;
  if (!info.isSelecting()) {
    if (info.getShading() != Shading.NONE && info.numLights() > 0) {
      lights=true;
      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");
switch (info.getShading()) {
case FLAT:
        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:
appendln(mb,"String_Node_Str");
if (!info.hasVertexNormals()) {
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,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (hasTextures) {
if (info.hasNormalMap()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
if (info.hasBumpMap()) {
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,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
break;
case NONE:
break;
}
}
 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");
}
boolean hasFragmentColors=(info.getVertexColorMixing() != ColorMixing.NONE) && (info.hasVertexColors() || ((mode == RenderingMode.INSTANCED_POINTS || mode == RenderingMode.INSTANCED_FRAMES || mode == RenderingMode.INSTANCED_AFFINES) && info.hasInstanceColors()) || (mode == RenderingMode.INSTANCED_LINES && info.hasLineColors()));
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
if (hasFragmentColors) {
appendln(mb,"String_Node_Str");
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb,"String_Node_Str");
ColorMixing cmix=info.getVertexColorMixing();
switch (cmix) {
case DECAL:
if (info.isMixVertexColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case MODULATE:
if (info.isMixVertexColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case REPLACE:
if (info.isMixVertexColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixVertexColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case NONE:
appendln(mb,"String_Node_Str");
default :
}
}
if (hasTextures && info.hasColorMap()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
ColorMixing cmix=info.getTextureColorMixing();
switch (cmix) {
case DECAL:
if (info.isMixTextureColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case MODULATE:
if (info.isMixTextureColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case REPLACE:
if (info.isMixTextureColorDiffuse()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorSpecular()) {
appendln(mb,"String_Node_Str");
}
if (info.isMixTextureColorEmission()) {
appendln(mb,"String_Node_Str");
}
break;
case NONE:
appendln(mb,"String_Node_Str");
break;
default :
}
appendln(mb);
}
}
if (info.isSelecting()) {
appendln(mb,"String_Node_Str");
}
 else if (lights) {
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");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
appendln(mb,"String_Node_Str");
}