1617a3babSopenharmony_ci#version 130
2617a3babSopenharmony_ci
3617a3babSopenharmony_ciuniform vec4 bigColor;
4617a3babSopenharmony_civarying vec4 BaseColor;
5617a3babSopenharmony_ciuniform float d;
6617a3babSopenharmony_ci
7617a3babSopenharmony_cifloat h = 0.0;
8617a3babSopenharmony_ci
9617a3babSopenharmony_cifloat foo(vec4 bar)
10617a3babSopenharmony_ci{
11617a3babSopenharmony_ci    return bar.x + bar.y;
12617a3babSopenharmony_ci}
13617a3babSopenharmony_ci
14617a3babSopenharmony_civoid bar()
15617a3babSopenharmony_ci{
16617a3babSopenharmony_ci}
17617a3babSopenharmony_ci
18617a3babSopenharmony_cifloat unreachableReturn()
19617a3babSopenharmony_ci{
20617a3babSopenharmony_ci    if (d < 4.2)
21617a3babSopenharmony_ci        return 1.2;
22617a3babSopenharmony_ci    else
23617a3babSopenharmony_ci        return 4.5;
24617a3babSopenharmony_ci    // might be another return inserted here by builders, has to be correct type
25617a3babSopenharmony_ci}
26617a3babSopenharmony_ci
27617a3babSopenharmony_cifloat missingReturn()
28617a3babSopenharmony_ci{
29617a3babSopenharmony_ci    if (d < 4.5) {
30617a3babSopenharmony_ci        h = d;
31617a3babSopenharmony_ci        return 3.9;
32617a3babSopenharmony_ci    }
33617a3babSopenharmony_ci}
34617a3babSopenharmony_ci
35617a3babSopenharmony_civoid main()
36617a3babSopenharmony_ci{
37617a3babSopenharmony_ci    vec4 color = vec4(foo(BaseColor));
38617a3babSopenharmony_ci
39617a3babSopenharmony_ci    bar();
40617a3babSopenharmony_ci    float f = unreachableReturn();
41617a3babSopenharmony_ci    float g = missingReturn();
42617a3babSopenharmony_ci    
43617a3babSopenharmony_ci    gl_FragColor = color * f * h;
44617a3babSopenharmony_ci}
45