e1d1b08203
This splits switch() construction into two stages. - One version of Make takes an array of case-values and case-statement lists, and is responsible for reporting errors if the case-values are not unique or are improperly typed. This is what the IR generator or DSL will start with on its first encounter with the switch statement. - The other version of Make takes an array of already-processed SwitchCases and can assume the invariant that they're all correctly- typed with unique values. This is what we will have when a statement is inlined or otherwise cloned. (We still assert this invariant, for correctness' sake, but in release mode we assume it.) This CL doesn't perform any optimizations at Make time yet; it does work equivalent to how `switch` works in the IR generator today. It does improve duplicate case-label checking slightly; duplicate case labels are now reported, and duplicate `default:` labels are detected. (Multiple `default` labels won't pass the parser, but they can be constructed in DSL.) Change-Id: I537ce2c8236152d58641fb1793619d66a62c01a8 Bug: skia:11342 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/372616 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: John Stiles <johnstiles@google.com> Auto-Submit: John Stiles <johnstiles@google.com>
5 lines
68 B
GLSL
5 lines
68 B
GLSL
### Compilation failed:
|
|
|
|
error: 5: duplicate case value '0'
|
|
1 error
|