1617a3babSopenharmony_ci#version 110 2617a3babSopenharmony_ci 3617a3babSopenharmony_ciint f(int a, int b, int c) 4617a3babSopenharmony_ci{ 5617a3babSopenharmony_ci int a = b; // ERROR, redefinition 6617a3babSopenharmony_ci 7617a3babSopenharmony_ci { 8617a3babSopenharmony_ci float a = float(a) + 1.0; // okay 9617a3babSopenharmony_ci } 10617a3babSopenharmony_ci 11617a3babSopenharmony_ci return a; 12617a3babSopenharmony_ci} 13617a3babSopenharmony_ci 14617a3babSopenharmony_ciint f(int a, int b, int c); // okay to redeclare 15617a3babSopenharmony_ci 16617a3babSopenharmony_cibool b; 17617a3babSopenharmony_cifloat b(int a); // okay, b and b() are different 18617a3babSopenharmony_ci 19617a3babSopenharmony_cifloat c(int a); 20617a3babSopenharmony_cibool c; // okay, and c() are different 21617a3babSopenharmony_ci 22617a3babSopenharmony_cifloat f; // okay f and f() are different 23617a3babSopenharmony_cifloat tan; // okay, hides built-in function 24617a3babSopenharmony_cifloat sin(float x); // okay, can redefine built-in functions 25617a3babSopenharmony_cifloat cos(float x) // okay, can redefine built-in functions 26617a3babSopenharmony_ci{ 27617a3babSopenharmony_ci return 1.0; 28617a3babSopenharmony_ci} 29617a3babSopenharmony_cibool radians(bool x) // okay, can overload built-in functions 30617a3babSopenharmony_ci{ 31617a3babSopenharmony_ci return true; 32617a3babSopenharmony_ci} 33617a3babSopenharmony_ci 34617a3babSopenharmony_ciint gi = f(1,2,3); // ERROR, can't call user-defined function from global scope 35617a3babSopenharmony_ci 36617a3babSopenharmony_civoid main() 37617a3babSopenharmony_ci{ 38617a3babSopenharmony_ci int g(); // okay 39617a3babSopenharmony_ci g(); 40617a3babSopenharmony_ci 41617a3babSopenharmony_ci float sin; // okay 42617a3babSopenharmony_ci sin; 43617a3babSopenharmony_ci sin(0.7); // okay 44617a3babSopenharmony_ci f(1,2,3); 45617a3babSopenharmony_ci 46617a3babSopenharmony_ci float f; 47617a3babSopenharmony_ci f = 3.0; 48617a3babSopenharmony_ci 49617a3babSopenharmony_ci gl_Position = vec4(f); 50617a3babSopenharmony_ci 51617a3babSopenharmony_ci for (int f = 0; f < 10; ++f) 52617a3babSopenharmony_ci ++f; 53617a3babSopenharmony_ci 54617a3babSopenharmony_ci int x = 1; 55617a3babSopenharmony_ci { 56617a3babSopenharmony_ci float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2 57617a3babSopenharmony_ci int z = z; // ERROR: z not previously defined. 58617a3babSopenharmony_ci } 59617a3babSopenharmony_ci { 60617a3babSopenharmony_ci int x = x; // x is initialized to '1' 61617a3babSopenharmony_ci } 62617a3babSopenharmony_ci 63617a3babSopenharmony_ci struct S 64617a3babSopenharmony_ci { 65617a3babSopenharmony_ci int x; 66617a3babSopenharmony_ci }; 67617a3babSopenharmony_ci { 68617a3babSopenharmony_ci S S = S(0); // 'S' is only visible as a struct and constructor 69617a3babSopenharmony_ci S.x; // 'S' is now visible as a variable 70617a3babSopenharmony_ci } 71617a3babSopenharmony_ci 72617a3babSopenharmony_ci int degrees; 73617a3babSopenharmony_ci degrees(3.2); 74617a3babSopenharmony_ci 75617a3babSopenharmony_ci { 76617a3babSopenharmony_ci S s; 77617a3babSopenharmony_ci s.x = 3; 78617a3babSopenharmony_ci struct S { // okay, hides S 79617a3babSopenharmony_ci bool b; 80617a3babSopenharmony_ci }; 81617a3babSopenharmony_ci S t; 82617a3babSopenharmony_ci t.b = true; 83617a3babSopenharmony_ci struct S { // ERROR, redefinition of struct S 84617a3babSopenharmony_ci float f; 85617a3babSopenharmony_ci }; 86617a3babSopenharmony_ci } 87617a3babSopenharmony_ci} 88