Program: 70908
Project: 70908
Buggy source:
private static void buildVertexShaderMain(StringBuilder mb,GLSLInfo 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);
  InstancedRendering instanced=info.getInstancedRendering();
switch (instanced) {
case AFFINES:
    appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
  appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case FRAMES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case LINES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineLengthOffset()) {
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");
if (info.hasLineLengthOffset()) {
appendln(mb,"String_Node_Str");
}
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case POINTS:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
break;
case NONE:
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
break;
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
ColorInterpolation cinterp=info.getColorInterpolation();
if (cinterp != ColorInterpolation.NONE) {
switch (instanced) {
case POINTS:
case FRAMES:
case AFFINES:
if (info.hasInstanceColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
}
 else if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
}
break;
case LINES:
if (info.hasLineColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
}
 else if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
}
break;
case NONE:
if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
}
break;
}
}
switch (info.getShading()) {
case FLAT:
case GOURAUD:
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,"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 PHONG:
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;
}
switch (info.getInstancedRendering()) {
case POINTS:
case FRAMES:
case AFFINES:
if (info.hasInstanceTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
 else if (info.hasVertexTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
case LINES:
if (info.hasLineTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
 else if (info.hasVertexTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
case NONE:
if (info.hasVertexTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
}
if (info.numClipPlanes() > 0) {
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,GLSLInfo 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);
  InstancedRendering instanced=info.getInstancedRendering();
switch (instanced) {
case AFFINES:
    appendln(mb,"String_Node_Str");
  appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
  appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case FRAMES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case LINES:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasLineLengthOffset()) {
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");
if (info.hasLineLengthOffset()) {
appendln(mb,"String_Node_Str");
}
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
}
appendln(mb);
break;
case POINTS:
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
break;
case NONE:
appendln(mb,"String_Node_Str");
if (info.hasVertexNormals() && info.getShading() != Shading.NONE) {
appendln(mb,"String_Node_Str");
}
break;
}
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
ColorInterpolation cinterp=info.getColorInterpolation();
if (cinterp != ColorInterpolation.NONE) {
switch (instanced) {
case POINTS:
case FRAMES:
case 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 LINES:
if (info.hasLineColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
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 NONE:
if (info.hasVertexColors()) {
if (cinterp == ColorInterpolation.HSV) {
appendln(mb,"String_Node_Str");
}
 else {
appendln(mb,"String_Node_Str");
}
appendln(mb);
}
break;
}
}
switch (info.getShading()) {
case FLAT:
case GOURAUD:
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,"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 PHONG:
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;
}
switch (info.getInstancedRendering()) {
case POINTS:
case FRAMES:
case AFFINES:
if (info.hasInstanceTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
 else if (info.hasVertexTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
case LINES:
if (info.hasLineTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
 else if (info.hasVertexTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
case NONE:
if (info.hasVertexTextures()) {
appendln(mb,"String_Node_Str");
appendln(mb,"String_Node_Str");
appendln(mb);
}
break;
}
if (info.numClipPlanes() > 0) {
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");
}