Commit 99b0ffd4 by John Kessenich

Properly handle 'default' nested in flow control, as well as default/case…

Properly handle 'default' nested in flow control, as well as default/case outside switch statements. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24629 e7fa87d3-cd2b-0410-9028-fcbf551c1848
parent ddbe0bef
......@@ -109,8 +109,13 @@ void main()
break;
}
break;
default:
case 4:
f = tan(x);
if (f < 0.0)
default: // ERROR
break;
}
case 5: // ERROR
default: // ERROR
}
......@@ -9,5 +9,5 @@
// source have to figure out how to create revision.h just to get a build
// going. However, if it is not updated, it can be a version behind.
#define GLSLANG_REVISION "24627"
#define GLSLANG_DATE "2013/12/30 13:40:03"
#define GLSLANG_REVISION "24628"
#define GLSLANG_DATE "2013/12/30 13:44:49"
......@@ -2276,16 +2276,25 @@ switch_statement_list
case_label
: CASE expression COLON {
$$ = 0;
if (parseContext.switchLevel.size() == 0)
parseContext.error($1.loc, "cannot appear outside switch statement", "case", "");
else if (parseContext.switchLevel.back() != parseContext.controlFlowNestingLevel)
parseContext.error($1.loc, "cannot be nested inside control flow", "case", "");
parseContext.constantValueCheck($2, "case");
parseContext.integerCheck($2, "case");
$$ = parseContext.intermediate.addBranch(EOpCase, $2, $1.loc);
else {
parseContext.constantValueCheck($2, "case");
parseContext.integerCheck($2, "case");
$$ = parseContext.intermediate.addBranch(EOpCase, $2, $1.loc);
}
}
| DEFAULT COLON {
$$ = parseContext.intermediate.addBranch(EOpDefault, $1.loc);
$$ = 0;
if (parseContext.switchLevel.size() == 0)
parseContext.error($1.loc, "cannot appear outside switch statement", "default", "");
else if (parseContext.switchLevel.back() != parseContext.controlFlowNestingLevel)
parseContext.error($1.loc, "cannot be nested inside control flow", "default", "");
else
$$ = parseContext.intermediate.addBranch(EOpDefault, $1.loc);
}
;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment