1*35238bceSAndroid Build Coastguard Workergroup valid "Valid scoping and name redeclaration cases" 2*35238bceSAndroid Build Coastguard Worker 3*35238bceSAndroid Build Coastguard Worker case local_variable_hides_global_variable 4*35238bceSAndroid Build Coastguard Worker version 300 es 5*35238bceSAndroid Build Coastguard Worker values 6*35238bceSAndroid Build Coastguard Worker { 7*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 8*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 9*35238bceSAndroid Build Coastguard Worker } 10*35238bceSAndroid Build Coastguard Worker 11*35238bceSAndroid Build Coastguard Worker both "" 12*35238bceSAndroid Build Coastguard Worker #version 300 es 13*35238bceSAndroid Build Coastguard Worker precision mediump float; 14*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 15*35238bceSAndroid Build Coastguard Worker 16*35238bceSAndroid Build Coastguard Worker int a = -1; 17*35238bceSAndroid Build Coastguard Worker 18*35238bceSAndroid Build Coastguard Worker void main() 19*35238bceSAndroid Build Coastguard Worker { 20*35238bceSAndroid Build Coastguard Worker ${SETUP} 21*35238bceSAndroid Build Coastguard Worker int a = in0; 22*35238bceSAndroid Build Coastguard Worker 23*35238bceSAndroid Build Coastguard Worker out0 = a; 24*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 25*35238bceSAndroid Build Coastguard Worker } 26*35238bceSAndroid Build Coastguard Worker "" 27*35238bceSAndroid Build Coastguard Worker end 28*35238bceSAndroid Build Coastguard Worker 29*35238bceSAndroid Build Coastguard Worker case block_variable_hides_local_variable 30*35238bceSAndroid Build Coastguard Worker version 300 es 31*35238bceSAndroid Build Coastguard Worker values 32*35238bceSAndroid Build Coastguard Worker { 33*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 34*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 35*35238bceSAndroid Build Coastguard Worker } 36*35238bceSAndroid Build Coastguard Worker 37*35238bceSAndroid Build Coastguard Worker both "" 38*35238bceSAndroid Build Coastguard Worker #version 300 es 39*35238bceSAndroid Build Coastguard Worker precision mediump float; 40*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 41*35238bceSAndroid Build Coastguard Worker void main() 42*35238bceSAndroid Build Coastguard Worker { 43*35238bceSAndroid Build Coastguard Worker ${SETUP} 44*35238bceSAndroid Build Coastguard Worker int a = in0; 45*35238bceSAndroid Build Coastguard Worker { 46*35238bceSAndroid Build Coastguard Worker int a = -1; 47*35238bceSAndroid Build Coastguard Worker } 48*35238bceSAndroid Build Coastguard Worker out0 = a; 49*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 50*35238bceSAndroid Build Coastguard Worker } 51*35238bceSAndroid Build Coastguard Worker "" 52*35238bceSAndroid Build Coastguard Worker end 53*35238bceSAndroid Build Coastguard Worker 54*35238bceSAndroid Build Coastguard Worker case block_variable_hides_global_variable 55*35238bceSAndroid Build Coastguard Worker version 300 es 56*35238bceSAndroid Build Coastguard Worker values 57*35238bceSAndroid Build Coastguard Worker { 58*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 59*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 60*35238bceSAndroid Build Coastguard Worker } 61*35238bceSAndroid Build Coastguard Worker 62*35238bceSAndroid Build Coastguard Worker both "" 63*35238bceSAndroid Build Coastguard Worker #version 300 es 64*35238bceSAndroid Build Coastguard Worker precision mediump float; 65*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard Worker int a = -1; 68*35238bceSAndroid Build Coastguard Worker 69*35238bceSAndroid Build Coastguard Worker void main() 70*35238bceSAndroid Build Coastguard Worker { 71*35238bceSAndroid Build Coastguard Worker ${SETUP} 72*35238bceSAndroid Build Coastguard Worker { 73*35238bceSAndroid Build Coastguard Worker int a = in0; 74*35238bceSAndroid Build Coastguard Worker 75*35238bceSAndroid Build Coastguard Worker out0 = a; 76*35238bceSAndroid Build Coastguard Worker } 77*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 78*35238bceSAndroid Build Coastguard Worker } 79*35238bceSAndroid Build Coastguard Worker "" 80*35238bceSAndroid Build Coastguard Worker end 81*35238bceSAndroid Build Coastguard Worker 82*35238bceSAndroid Build Coastguard Worker case for_init_statement_variable_hides_local_variable 83*35238bceSAndroid Build Coastguard Worker version 300 es 84*35238bceSAndroid Build Coastguard Worker values 85*35238bceSAndroid Build Coastguard Worker { 86*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 87*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 88*35238bceSAndroid Build Coastguard Worker } 89*35238bceSAndroid Build Coastguard Worker 90*35238bceSAndroid Build Coastguard Worker both "" 91*35238bceSAndroid Build Coastguard Worker #version 300 es 92*35238bceSAndroid Build Coastguard Worker precision mediump float; 93*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 94*35238bceSAndroid Build Coastguard Worker void main() 95*35238bceSAndroid Build Coastguard Worker { 96*35238bceSAndroid Build Coastguard Worker ${SETUP} 97*35238bceSAndroid Build Coastguard Worker int a = in0; 98*35238bceSAndroid Build Coastguard Worker for (int a = 0; a < 10; a++) 99*35238bceSAndroid Build Coastguard Worker { 100*35238bceSAndroid Build Coastguard Worker } 101*35238bceSAndroid Build Coastguard Worker out0 = a; 102*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 103*35238bceSAndroid Build Coastguard Worker } 104*35238bceSAndroid Build Coastguard Worker "" 105*35238bceSAndroid Build Coastguard Worker end 106*35238bceSAndroid Build Coastguard Worker 107*35238bceSAndroid Build Coastguard Worker case while_condition_variable_hides_local_variable 108*35238bceSAndroid Build Coastguard Worker version 300 es 109*35238bceSAndroid Build Coastguard Worker values 110*35238bceSAndroid Build Coastguard Worker { 111*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 112*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 113*35238bceSAndroid Build Coastguard Worker } 114*35238bceSAndroid Build Coastguard Worker 115*35238bceSAndroid Build Coastguard Worker both "" 116*35238bceSAndroid Build Coastguard Worker #version 300 es 117*35238bceSAndroid Build Coastguard Worker precision mediump float; 118*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 119*35238bceSAndroid Build Coastguard Worker void main() 120*35238bceSAndroid Build Coastguard Worker { 121*35238bceSAndroid Build Coastguard Worker ${SETUP} 122*35238bceSAndroid Build Coastguard Worker int a = in0; 123*35238bceSAndroid Build Coastguard Worker int i = 0; 124*35238bceSAndroid Build Coastguard Worker while (bool a = (i < 1)) 125*35238bceSAndroid Build Coastguard Worker { 126*35238bceSAndroid Build Coastguard Worker i++; 127*35238bceSAndroid Build Coastguard Worker } 128*35238bceSAndroid Build Coastguard Worker out0 = a; 129*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 130*35238bceSAndroid Build Coastguard Worker } 131*35238bceSAndroid Build Coastguard Worker "" 132*35238bceSAndroid Build Coastguard Worker end 133*35238bceSAndroid Build Coastguard Worker 134*35238bceSAndroid Build Coastguard Worker case for_init_statement_variable_hides_global_variable 135*35238bceSAndroid Build Coastguard Worker version 300 es 136*35238bceSAndroid Build Coastguard Worker values 137*35238bceSAndroid Build Coastguard Worker { 138*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 139*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 140*35238bceSAndroid Build Coastguard Worker } 141*35238bceSAndroid Build Coastguard Worker 142*35238bceSAndroid Build Coastguard Worker both "" 143*35238bceSAndroid Build Coastguard Worker #version 300 es 144*35238bceSAndroid Build Coastguard Worker precision mediump float; 145*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 146*35238bceSAndroid Build Coastguard Worker 147*35238bceSAndroid Build Coastguard Worker int a = 5; 148*35238bceSAndroid Build Coastguard Worker 149*35238bceSAndroid Build Coastguard Worker void main() 150*35238bceSAndroid Build Coastguard Worker { 151*35238bceSAndroid Build Coastguard Worker ${SETUP} 152*35238bceSAndroid Build Coastguard Worker for (int a = 0; a < 10; a++) 153*35238bceSAndroid Build Coastguard Worker { 154*35238bceSAndroid Build Coastguard Worker } 155*35238bceSAndroid Build Coastguard Worker out0 = in0 + a - 5; 156*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 157*35238bceSAndroid Build Coastguard Worker } 158*35238bceSAndroid Build Coastguard Worker "" 159*35238bceSAndroid Build Coastguard Worker end 160*35238bceSAndroid Build Coastguard Worker 161*35238bceSAndroid Build Coastguard Worker case while_condition_variable_hides_global_variable 162*35238bceSAndroid Build Coastguard Worker version 300 es 163*35238bceSAndroid Build Coastguard Worker values 164*35238bceSAndroid Build Coastguard Worker { 165*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 166*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 167*35238bceSAndroid Build Coastguard Worker } 168*35238bceSAndroid Build Coastguard Worker 169*35238bceSAndroid Build Coastguard Worker both "" 170*35238bceSAndroid Build Coastguard Worker #version 300 es 171*35238bceSAndroid Build Coastguard Worker precision mediump float; 172*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 173*35238bceSAndroid Build Coastguard Worker 174*35238bceSAndroid Build Coastguard Worker int a = 5; 175*35238bceSAndroid Build Coastguard Worker 176*35238bceSAndroid Build Coastguard Worker void main() 177*35238bceSAndroid Build Coastguard Worker { 178*35238bceSAndroid Build Coastguard Worker ${SETUP} 179*35238bceSAndroid Build Coastguard Worker int i = 0; 180*35238bceSAndroid Build Coastguard Worker while (bool a = (i < 1)) 181*35238bceSAndroid Build Coastguard Worker { 182*35238bceSAndroid Build Coastguard Worker i++; 183*35238bceSAndroid Build Coastguard Worker } 184*35238bceSAndroid Build Coastguard Worker out0 = in0 + a - 5; 185*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 186*35238bceSAndroid Build Coastguard Worker } 187*35238bceSAndroid Build Coastguard Worker "" 188*35238bceSAndroid Build Coastguard Worker end 189*35238bceSAndroid Build Coastguard Worker 190*35238bceSAndroid Build Coastguard Worker case variable_in_if_hides_global_variable 191*35238bceSAndroid Build Coastguard Worker version 300 es 192*35238bceSAndroid Build Coastguard Worker values 193*35238bceSAndroid Build Coastguard Worker { 194*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 195*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 196*35238bceSAndroid Build Coastguard Worker } 197*35238bceSAndroid Build Coastguard Worker 198*35238bceSAndroid Build Coastguard Worker both "" 199*35238bceSAndroid Build Coastguard Worker #version 300 es 200*35238bceSAndroid Build Coastguard Worker precision mediump float; 201*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 202*35238bceSAndroid Build Coastguard Worker 203*35238bceSAndroid Build Coastguard Worker int a = 1; 204*35238bceSAndroid Build Coastguard Worker 205*35238bceSAndroid Build Coastguard Worker void main() 206*35238bceSAndroid Build Coastguard Worker { 207*35238bceSAndroid Build Coastguard Worker ${SETUP} 208*35238bceSAndroid Build Coastguard Worker if (true) 209*35238bceSAndroid Build Coastguard Worker int a = 42; 210*35238bceSAndroid Build Coastguard Worker out0 = a*in0; 211*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 212*35238bceSAndroid Build Coastguard Worker } 213*35238bceSAndroid Build Coastguard Worker "" 214*35238bceSAndroid Build Coastguard Worker end 215*35238bceSAndroid Build Coastguard Worker 216*35238bceSAndroid Build Coastguard Worker case variable_from_outer_scope_visible_in_initializer 217*35238bceSAndroid Build Coastguard Worker version 300 es 218*35238bceSAndroid Build Coastguard Worker values 219*35238bceSAndroid Build Coastguard Worker { 220*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 221*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 222*35238bceSAndroid Build Coastguard Worker } 223*35238bceSAndroid Build Coastguard Worker 224*35238bceSAndroid Build Coastguard Worker both "" 225*35238bceSAndroid Build Coastguard Worker #version 300 es 226*35238bceSAndroid Build Coastguard Worker precision mediump float; 227*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 228*35238bceSAndroid Build Coastguard Worker void main() 229*35238bceSAndroid Build Coastguard Worker { 230*35238bceSAndroid Build Coastguard Worker ${SETUP} 231*35238bceSAndroid Build Coastguard Worker int a = in0; 232*35238bceSAndroid Build Coastguard Worker { 233*35238bceSAndroid Build Coastguard Worker int a = a+5, b = a-5; 234*35238bceSAndroid Build Coastguard Worker out0 = b; 235*35238bceSAndroid Build Coastguard Worker a = 42; 236*35238bceSAndroid Build Coastguard Worker } 237*35238bceSAndroid Build Coastguard Worker out0 = out0 + a - in0; 238*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 239*35238bceSAndroid Build Coastguard Worker } 240*35238bceSAndroid Build Coastguard Worker "" 241*35238bceSAndroid Build Coastguard Worker end 242*35238bceSAndroid Build Coastguard Worker 243*35238bceSAndroid Build Coastguard Worker case local_int_variable_hides_struct_type 244*35238bceSAndroid Build Coastguard Worker version 300 es 245*35238bceSAndroid Build Coastguard Worker values 246*35238bceSAndroid Build Coastguard Worker { 247*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 248*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 249*35238bceSAndroid Build Coastguard Worker } 250*35238bceSAndroid Build Coastguard Worker 251*35238bceSAndroid Build Coastguard Worker both "" 252*35238bceSAndroid Build Coastguard Worker #version 300 es 253*35238bceSAndroid Build Coastguard Worker precision mediump float; 254*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 255*35238bceSAndroid Build Coastguard Worker 256*35238bceSAndroid Build Coastguard Worker struct S { int val; }; 257*35238bceSAndroid Build Coastguard Worker 258*35238bceSAndroid Build Coastguard Worker void main() 259*35238bceSAndroid Build Coastguard Worker { 260*35238bceSAndroid Build Coastguard Worker ${SETUP} 261*35238bceSAndroid Build Coastguard Worker int S = S(in0).val; 262*35238bceSAndroid Build Coastguard Worker out0 = S; 263*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 264*35238bceSAndroid Build Coastguard Worker } 265*35238bceSAndroid Build Coastguard Worker "" 266*35238bceSAndroid Build Coastguard Worker end 267*35238bceSAndroid Build Coastguard Worker 268*35238bceSAndroid Build Coastguard Worker case local_struct_variable_hides_struct_type 269*35238bceSAndroid Build Coastguard Worker version 300 es 270*35238bceSAndroid Build Coastguard Worker values 271*35238bceSAndroid Build Coastguard Worker { 272*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 273*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 274*35238bceSAndroid Build Coastguard Worker } 275*35238bceSAndroid Build Coastguard Worker 276*35238bceSAndroid Build Coastguard Worker both "" 277*35238bceSAndroid Build Coastguard Worker #version 300 es 278*35238bceSAndroid Build Coastguard Worker precision mediump float; 279*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 280*35238bceSAndroid Build Coastguard Worker 281*35238bceSAndroid Build Coastguard Worker struct S { int val; }; 282*35238bceSAndroid Build Coastguard Worker 283*35238bceSAndroid Build Coastguard Worker void main() 284*35238bceSAndroid Build Coastguard Worker { 285*35238bceSAndroid Build Coastguard Worker ${SETUP} 286*35238bceSAndroid Build Coastguard Worker S S = S(in0); 287*35238bceSAndroid Build Coastguard Worker out0 = S.val; 288*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 289*35238bceSAndroid Build Coastguard Worker } 290*35238bceSAndroid Build Coastguard Worker "" 291*35238bceSAndroid Build Coastguard Worker end 292*35238bceSAndroid Build Coastguard Worker 293*35238bceSAndroid Build Coastguard Worker case local_variable_hides_function 294*35238bceSAndroid Build Coastguard Worker version 300 es 295*35238bceSAndroid Build Coastguard Worker values 296*35238bceSAndroid Build Coastguard Worker { 297*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 298*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 299*35238bceSAndroid Build Coastguard Worker } 300*35238bceSAndroid Build Coastguard Worker 301*35238bceSAndroid Build Coastguard Worker both "" 302*35238bceSAndroid Build Coastguard Worker #version 300 es 303*35238bceSAndroid Build Coastguard Worker precision mediump float; 304*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 305*35238bceSAndroid Build Coastguard Worker 306*35238bceSAndroid Build Coastguard Worker int foo (int x) { return x; } 307*35238bceSAndroid Build Coastguard Worker 308*35238bceSAndroid Build Coastguard Worker void main() 309*35238bceSAndroid Build Coastguard Worker { 310*35238bceSAndroid Build Coastguard Worker ${SETUP} 311*35238bceSAndroid Build Coastguard Worker int foo = in0; 312*35238bceSAndroid Build Coastguard Worker out0 = foo; 313*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 314*35238bceSAndroid Build Coastguard Worker } 315*35238bceSAndroid Build Coastguard Worker "" 316*35238bceSAndroid Build Coastguard Worker end 317*35238bceSAndroid Build Coastguard Worker 318*35238bceSAndroid Build Coastguard Worker case function_parameter_hides_global_variable 319*35238bceSAndroid Build Coastguard Worker version 300 es 320*35238bceSAndroid Build Coastguard Worker values 321*35238bceSAndroid Build Coastguard Worker { 322*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 323*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 324*35238bceSAndroid Build Coastguard Worker } 325*35238bceSAndroid Build Coastguard Worker 326*35238bceSAndroid Build Coastguard Worker both "" 327*35238bceSAndroid Build Coastguard Worker #version 300 es 328*35238bceSAndroid Build Coastguard Worker precision mediump float; 329*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 330*35238bceSAndroid Build Coastguard Worker 331*35238bceSAndroid Build Coastguard Worker int a = -1; 332*35238bceSAndroid Build Coastguard Worker 333*35238bceSAndroid Build Coastguard Worker int func (int a) { return a; } 334*35238bceSAndroid Build Coastguard Worker 335*35238bceSAndroid Build Coastguard Worker void main() 336*35238bceSAndroid Build Coastguard Worker { 337*35238bceSAndroid Build Coastguard Worker ${SETUP} 338*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 339*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 340*35238bceSAndroid Build Coastguard Worker } 341*35238bceSAndroid Build Coastguard Worker "" 342*35238bceSAndroid Build Coastguard Worker end 343*35238bceSAndroid Build Coastguard Worker 344*35238bceSAndroid Build Coastguard Worker case function_parameter_hides_struct_type 345*35238bceSAndroid Build Coastguard Worker version 300 es 346*35238bceSAndroid Build Coastguard Worker values 347*35238bceSAndroid Build Coastguard Worker { 348*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 349*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 350*35238bceSAndroid Build Coastguard Worker } 351*35238bceSAndroid Build Coastguard Worker 352*35238bceSAndroid Build Coastguard Worker both "" 353*35238bceSAndroid Build Coastguard Worker #version 300 es 354*35238bceSAndroid Build Coastguard Worker precision mediump float; 355*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 356*35238bceSAndroid Build Coastguard Worker 357*35238bceSAndroid Build Coastguard Worker struct S { int x; }; 358*35238bceSAndroid Build Coastguard Worker 359*35238bceSAndroid Build Coastguard Worker int func (int S) { return S; } 360*35238bceSAndroid Build Coastguard Worker 361*35238bceSAndroid Build Coastguard Worker void main() 362*35238bceSAndroid Build Coastguard Worker { 363*35238bceSAndroid Build Coastguard Worker ${SETUP} 364*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 365*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 366*35238bceSAndroid Build Coastguard Worker } 367*35238bceSAndroid Build Coastguard Worker "" 368*35238bceSAndroid Build Coastguard Worker end 369*35238bceSAndroid Build Coastguard Worker 370*35238bceSAndroid Build Coastguard Worker case function_parameter_hides_function 371*35238bceSAndroid Build Coastguard Worker version 300 es 372*35238bceSAndroid Build Coastguard Worker values 373*35238bceSAndroid Build Coastguard Worker { 374*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 375*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 376*35238bceSAndroid Build Coastguard Worker } 377*35238bceSAndroid Build Coastguard Worker 378*35238bceSAndroid Build Coastguard Worker both "" 379*35238bceSAndroid Build Coastguard Worker #version 300 es 380*35238bceSAndroid Build Coastguard Worker precision mediump float; 381*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 382*35238bceSAndroid Build Coastguard Worker 383*35238bceSAndroid Build Coastguard Worker int func (int func) { return func; } 384*35238bceSAndroid Build Coastguard Worker 385*35238bceSAndroid Build Coastguard Worker void main() 386*35238bceSAndroid Build Coastguard Worker { 387*35238bceSAndroid Build Coastguard Worker ${SETUP} 388*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 389*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 390*35238bceSAndroid Build Coastguard Worker } 391*35238bceSAndroid Build Coastguard Worker "" 392*35238bceSAndroid Build Coastguard Worker end 393*35238bceSAndroid Build Coastguard Worker 394*35238bceSAndroid Build Coastguard Worker case local_variable_in_inner_scope_hides_function_parameter 395*35238bceSAndroid Build Coastguard Worker version 300 es 396*35238bceSAndroid Build Coastguard Worker values 397*35238bceSAndroid Build Coastguard Worker { 398*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 399*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 400*35238bceSAndroid Build Coastguard Worker } 401*35238bceSAndroid Build Coastguard Worker 402*35238bceSAndroid Build Coastguard Worker both "" 403*35238bceSAndroid Build Coastguard Worker #version 300 es 404*35238bceSAndroid Build Coastguard Worker precision mediump float; 405*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 406*35238bceSAndroid Build Coastguard Worker int func (int inp, int x) { { int x = 5; return inp + x - 5; } } 407*35238bceSAndroid Build Coastguard Worker 408*35238bceSAndroid Build Coastguard Worker void main() 409*35238bceSAndroid Build Coastguard Worker { 410*35238bceSAndroid Build Coastguard Worker ${SETUP} 411*35238bceSAndroid Build Coastguard Worker out0 = func(in0, 42); 412*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 413*35238bceSAndroid Build Coastguard Worker } 414*35238bceSAndroid Build Coastguard Worker "" 415*35238bceSAndroid Build Coastguard Worker end 416*35238bceSAndroid Build Coastguard Worker 417*35238bceSAndroid Build Coastguard Worker case redeclare_function 418*35238bceSAndroid Build Coastguard Worker version 300 es 419*35238bceSAndroid Build Coastguard Worker values 420*35238bceSAndroid Build Coastguard Worker { 421*35238bceSAndroid Build Coastguard Worker input int in0 = [ 1 | 2 | 3 ]; 422*35238bceSAndroid Build Coastguard Worker output int out0 = [ 1 | 2 | 3 ]; 423*35238bceSAndroid Build Coastguard Worker } 424*35238bceSAndroid Build Coastguard Worker 425*35238bceSAndroid Build Coastguard Worker both "" 426*35238bceSAndroid Build Coastguard Worker #version 300 es 427*35238bceSAndroid Build Coastguard Worker precision mediump float; 428*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 429*35238bceSAndroid Build Coastguard Worker 430*35238bceSAndroid Build Coastguard Worker int func (int x); 431*35238bceSAndroid Build Coastguard Worker int func (int); 432*35238bceSAndroid Build Coastguard Worker int func (int inp) { return inp; } 433*35238bceSAndroid Build Coastguard Worker 434*35238bceSAndroid Build Coastguard Worker void main() 435*35238bceSAndroid Build Coastguard Worker { 436*35238bceSAndroid Build Coastguard Worker ${SETUP} 437*35238bceSAndroid Build Coastguard Worker out0 = func(in0); 438*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 439*35238bceSAndroid Build Coastguard Worker } 440*35238bceSAndroid Build Coastguard Worker "" 441*35238bceSAndroid Build Coastguard Worker end 442*35238bceSAndroid Build Coastguard Worker 443*35238bceSAndroid Build Coastguard Workerend 444*35238bceSAndroid Build Coastguard Worker 445*35238bceSAndroid Build Coastguard Workergroup invalid "Invalid scoping behavior" 446*35238bceSAndroid Build Coastguard Worker 447*35238bceSAndroid Build Coastguard Worker case redeclare_global_variable 448*35238bceSAndroid Build Coastguard Worker version 300 es 449*35238bceSAndroid Build Coastguard Worker expect compile_fail 450*35238bceSAndroid Build Coastguard Worker both "" 451*35238bceSAndroid Build Coastguard Worker #version 300 es 452*35238bceSAndroid Build Coastguard Worker precision mediump float; 453*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 454*35238bceSAndroid Build Coastguard Worker 455*35238bceSAndroid Build Coastguard Worker int a; 456*35238bceSAndroid Build Coastguard Worker float a; 457*35238bceSAndroid Build Coastguard Worker 458*35238bceSAndroid Build Coastguard Worker void main() 459*35238bceSAndroid Build Coastguard Worker { 460*35238bceSAndroid Build Coastguard Worker a = 1.0; 461*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 462*35238bceSAndroid Build Coastguard Worker } 463*35238bceSAndroid Build Coastguard Worker "" 464*35238bceSAndroid Build Coastguard Worker end 465*35238bceSAndroid Build Coastguard Worker 466*35238bceSAndroid Build Coastguard Worker case redeclare_local_variable 467*35238bceSAndroid Build Coastguard Worker version 300 es 468*35238bceSAndroid Build Coastguard Worker expect compile_fail 469*35238bceSAndroid Build Coastguard Worker both "" 470*35238bceSAndroid Build Coastguard Worker #version 300 es 471*35238bceSAndroid Build Coastguard Worker precision mediump float; 472*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 473*35238bceSAndroid Build Coastguard Worker 474*35238bceSAndroid Build Coastguard Worker void main() 475*35238bceSAndroid Build Coastguard Worker { 476*35238bceSAndroid Build Coastguard Worker int a; 477*35238bceSAndroid Build Coastguard Worker float a; 478*35238bceSAndroid Build Coastguard Worker a = 1.0; 479*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 480*35238bceSAndroid Build Coastguard Worker } 481*35238bceSAndroid Build Coastguard Worker "" 482*35238bceSAndroid Build Coastguard Worker end 483*35238bceSAndroid Build Coastguard Worker 484*35238bceSAndroid Build Coastguard Worker case redeclare_for_init_statement_variable 485*35238bceSAndroid Build Coastguard Worker version 300 es 486*35238bceSAndroid Build Coastguard Worker expect compile_fail 487*35238bceSAndroid Build Coastguard Worker both "" 488*35238bceSAndroid Build Coastguard Worker #version 300 es 489*35238bceSAndroid Build Coastguard Worker precision mediump float; 490*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 491*35238bceSAndroid Build Coastguard Worker 492*35238bceSAndroid Build Coastguard Worker void main() 493*35238bceSAndroid Build Coastguard Worker { 494*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 10; i++) 495*35238bceSAndroid Build Coastguard Worker { 496*35238bceSAndroid Build Coastguard Worker int i = 11; 497*35238bceSAndroid Build Coastguard Worker } 498*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(0.0); 499*35238bceSAndroid Build Coastguard Worker } 500*35238bceSAndroid Build Coastguard Worker "" 501*35238bceSAndroid Build Coastguard Worker end 502*35238bceSAndroid Build Coastguard Worker 503*35238bceSAndroid Build Coastguard Worker case redeclare_for_condition_variable 504*35238bceSAndroid Build Coastguard Worker version 300 es 505*35238bceSAndroid Build Coastguard Worker expect compile_fail 506*35238bceSAndroid Build Coastguard Worker both "" 507*35238bceSAndroid Build Coastguard Worker #version 300 es 508*35238bceSAndroid Build Coastguard Worker precision mediump float; 509*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 510*35238bceSAndroid Build Coastguard Worker 511*35238bceSAndroid Build Coastguard Worker void main() 512*35238bceSAndroid Build Coastguard Worker { 513*35238bceSAndroid Build Coastguard Worker for (int i = 0; int a = (i < 10); i++) 514*35238bceSAndroid Build Coastguard Worker { 515*35238bceSAndroid Build Coastguard Worker int a = 0; 516*35238bceSAndroid Build Coastguard Worker } 517*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(0.0); 518*35238bceSAndroid Build Coastguard Worker } 519*35238bceSAndroid Build Coastguard Worker "" 520*35238bceSAndroid Build Coastguard Worker end 521*35238bceSAndroid Build Coastguard Worker 522*35238bceSAndroid Build Coastguard Worker case redeclare_for_init_statement_variable_in_for_condition 523*35238bceSAndroid Build Coastguard Worker version 300 es 524*35238bceSAndroid Build Coastguard Worker expect compile_fail 525*35238bceSAndroid Build Coastguard Worker both "" 526*35238bceSAndroid Build Coastguard Worker #version 300 es 527*35238bceSAndroid Build Coastguard Worker precision mediump float; 528*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 529*35238bceSAndroid Build Coastguard Worker 530*35238bceSAndroid Build Coastguard Worker void main() 531*35238bceSAndroid Build Coastguard Worker { 532*35238bceSAndroid Build Coastguard Worker float a; 533*35238bceSAndroid Build Coastguard Worker for (int i = 0; int i = (i < 10); i++) 534*35238bceSAndroid Build Coastguard Worker { 535*35238bceSAndroid Build Coastguard Worker a = sin(i); 536*35238bceSAndroid Build Coastguard Worker } 537*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 538*35238bceSAndroid Build Coastguard Worker } 539*35238bceSAndroid Build Coastguard Worker "" 540*35238bceSAndroid Build Coastguard Worker end 541*35238bceSAndroid Build Coastguard Worker 542*35238bceSAndroid Build Coastguard Worker case redeclare_while_condition_variable 543*35238bceSAndroid Build Coastguard Worker version 300 es 544*35238bceSAndroid Build Coastguard Worker expect compile_fail 545*35238bceSAndroid Build Coastguard Worker both "" 546*35238bceSAndroid Build Coastguard Worker #version 300 es 547*35238bceSAndroid Build Coastguard Worker precision mediump float; 548*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 549*35238bceSAndroid Build Coastguard Worker 550*35238bceSAndroid Build Coastguard Worker void main() 551*35238bceSAndroid Build Coastguard Worker { 552*35238bceSAndroid Build Coastguard Worker int a = 0; 553*35238bceSAndroid Build Coastguard Worker while (int i = (a < 5)) 554*35238bceSAndroid Build Coastguard Worker { 555*35238bceSAndroid Build Coastguard Worker int i = 11; 556*35238bceSAndroid Build Coastguard Worker a += i; 557*35238bceSAndroid Build Coastguard Worker } 558*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(0.0); 559*35238bceSAndroid Build Coastguard Worker } 560*35238bceSAndroid Build Coastguard Worker "" 561*35238bceSAndroid Build Coastguard Worker end 562*35238bceSAndroid Build Coastguard Worker 563*35238bceSAndroid Build Coastguard Worker case redefine_function 564*35238bceSAndroid Build Coastguard Worker version 300 es 565*35238bceSAndroid Build Coastguard Worker expect compile_fail 566*35238bceSAndroid Build Coastguard Worker both "" 567*35238bceSAndroid Build Coastguard Worker #version 300 es 568*35238bceSAndroid Build Coastguard Worker precision mediump float; 569*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 570*35238bceSAndroid Build Coastguard Worker 571*35238bceSAndroid Build Coastguard Worker float func(float x); 572*35238bceSAndroid Build Coastguard Worker 573*35238bceSAndroid Build Coastguard Worker float func(float x) { return x + 1.0; } 574*35238bceSAndroid Build Coastguard Worker float func(float x) { return x + 2.0; } 575*35238bceSAndroid Build Coastguard Worker 576*35238bceSAndroid Build Coastguard Worker void main() 577*35238bceSAndroid Build Coastguard Worker { 578*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(1.0)); 579*35238bceSAndroid Build Coastguard Worker } 580*35238bceSAndroid Build Coastguard Worker "" 581*35238bceSAndroid Build Coastguard Worker end 582*35238bceSAndroid Build Coastguard Worker 583*35238bceSAndroid Build Coastguard Worker case redeclare_builtin 584*35238bceSAndroid Build Coastguard Worker version 300 es 585*35238bceSAndroid Build Coastguard Worker expect compile_fail 586*35238bceSAndroid Build Coastguard Worker both "" 587*35238bceSAndroid Build Coastguard Worker #version 300 es 588*35238bceSAndroid Build Coastguard Worker precision mediump float; 589*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 590*35238bceSAndroid Build Coastguard Worker 591*35238bceSAndroid Build Coastguard Worker float sin(float x); 592*35238bceSAndroid Build Coastguard Worker 593*35238bceSAndroid Build Coastguard Worker void main() 594*35238bceSAndroid Build Coastguard Worker { 595*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(sin(1.0)); 596*35238bceSAndroid Build Coastguard Worker } 597*35238bceSAndroid Build Coastguard Worker "" 598*35238bceSAndroid Build Coastguard Worker end 599*35238bceSAndroid Build Coastguard Worker 600*35238bceSAndroid Build Coastguard Worker case redefine_builtin 601*35238bceSAndroid Build Coastguard Worker version 300 es 602*35238bceSAndroid Build Coastguard Worker expect compile_fail 603*35238bceSAndroid Build Coastguard Worker both "" 604*35238bceSAndroid Build Coastguard Worker #version 300 es 605*35238bceSAndroid Build Coastguard Worker precision mediump float; 606*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 607*35238bceSAndroid Build Coastguard Worker 608*35238bceSAndroid Build Coastguard Worker float sin(float x) { return x + 1.0; } 609*35238bceSAndroid Build Coastguard Worker 610*35238bceSAndroid Build Coastguard Worker void main() 611*35238bceSAndroid Build Coastguard Worker { 612*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(sin(1.0)); 613*35238bceSAndroid Build Coastguard Worker } 614*35238bceSAndroid Build Coastguard Worker "" 615*35238bceSAndroid Build Coastguard Worker end 616*35238bceSAndroid Build Coastguard Worker 617*35238bceSAndroid Build Coastguard Worker case conflict_function_struct 618*35238bceSAndroid Build Coastguard Worker version 300 es 619*35238bceSAndroid Build Coastguard Worker expect compile_fail 620*35238bceSAndroid Build Coastguard Worker both "" 621*35238bceSAndroid Build Coastguard Worker #version 300 es 622*35238bceSAndroid Build Coastguard Worker precision mediump float; 623*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 624*35238bceSAndroid Build Coastguard Worker 625*35238bceSAndroid Build Coastguard Worker void f(int x); 626*35238bceSAndroid Build Coastguard Worker struct f { int x; }; 627*35238bceSAndroid Build Coastguard Worker 628*35238bceSAndroid Build Coastguard Worker void main() 629*35238bceSAndroid Build Coastguard Worker { 630*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(1); 631*35238bceSAndroid Build Coastguard Worker } 632*35238bceSAndroid Build Coastguard Worker "" 633*35238bceSAndroid Build Coastguard Worker end 634*35238bceSAndroid Build Coastguard Worker 635*35238bceSAndroid Build Coastguard Worker case conflict_function_variable 636*35238bceSAndroid Build Coastguard Worker version 300 es 637*35238bceSAndroid Build Coastguard Worker expect compile_fail 638*35238bceSAndroid Build Coastguard Worker both "" 639*35238bceSAndroid Build Coastguard Worker #version 300 es 640*35238bceSAndroid Build Coastguard Worker precision mediump float; 641*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 642*35238bceSAndroid Build Coastguard Worker 643*35238bceSAndroid Build Coastguard Worker void f(int x); 644*35238bceSAndroid Build Coastguard Worker float f; 645*35238bceSAndroid Build Coastguard Worker 646*35238bceSAndroid Build Coastguard Worker void main() 647*35238bceSAndroid Build Coastguard Worker { 648*35238bceSAndroid Build Coastguard Worker f = 1.0; 649*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(f); 650*35238bceSAndroid Build Coastguard Worker } 651*35238bceSAndroid Build Coastguard Worker "" 652*35238bceSAndroid Build Coastguard Worker end 653*35238bceSAndroid Build Coastguard Worker 654*35238bceSAndroid Build Coastguard Worker case use_global_variable_before_declaration 655*35238bceSAndroid Build Coastguard Worker version 300 es 656*35238bceSAndroid Build Coastguard Worker expect compile_fail 657*35238bceSAndroid Build Coastguard Worker both "" 658*35238bceSAndroid Build Coastguard Worker #version 300 es 659*35238bceSAndroid Build Coastguard Worker precision mediump float; 660*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 661*35238bceSAndroid Build Coastguard Worker 662*35238bceSAndroid Build Coastguard Worker void func() 663*35238bceSAndroid Build Coastguard Worker { 664*35238bceSAndroid Build Coastguard Worker a = 2.0; 665*35238bceSAndroid Build Coastguard Worker } 666*35238bceSAndroid Build Coastguard Worker 667*35238bceSAndroid Build Coastguard Worker float a; 668*35238bceSAndroid Build Coastguard Worker 669*35238bceSAndroid Build Coastguard Worker void main() 670*35238bceSAndroid Build Coastguard Worker { 671*35238bceSAndroid Build Coastguard Worker func(); 672*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 673*35238bceSAndroid Build Coastguard Worker } 674*35238bceSAndroid Build Coastguard Worker "" 675*35238bceSAndroid Build Coastguard Worker end 676*35238bceSAndroid Build Coastguard Worker 677*35238bceSAndroid Build Coastguard Worker case use_local_variable_before_declaration 678*35238bceSAndroid Build Coastguard Worker version 300 es 679*35238bceSAndroid Build Coastguard Worker expect compile_fail 680*35238bceSAndroid Build Coastguard Worker both "" 681*35238bceSAndroid Build Coastguard Worker #version 300 es 682*35238bceSAndroid Build Coastguard Worker precision mediump float; 683*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 684*35238bceSAndroid Build Coastguard Worker 685*35238bceSAndroid Build Coastguard Worker void main() 686*35238bceSAndroid Build Coastguard Worker { 687*35238bceSAndroid Build Coastguard Worker float a = 1.0; 688*35238bceSAndroid Build Coastguard Worker a = b; 689*35238bceSAndroid Build Coastguard Worker float b = 2.0; 690*35238bceSAndroid Build Coastguard Worker 691*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 692*35238bceSAndroid Build Coastguard Worker } 693*35238bceSAndroid Build Coastguard Worker "" 694*35238bceSAndroid Build Coastguard Worker end 695*35238bceSAndroid Build Coastguard Worker 696*35238bceSAndroid Build Coastguard Worker case use_struct_type_before_declaration 697*35238bceSAndroid Build Coastguard Worker version 300 es 698*35238bceSAndroid Build Coastguard Worker expect compile_fail 699*35238bceSAndroid Build Coastguard Worker both "" 700*35238bceSAndroid Build Coastguard Worker #version 300 es 701*35238bceSAndroid Build Coastguard Worker precision mediump float; 702*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 703*35238bceSAndroid Build Coastguard Worker 704*35238bceSAndroid Build Coastguard Worker float func (float x) { return S(x).val; } 705*35238bceSAndroid Build Coastguard Worker struct S { float val; }; 706*35238bceSAndroid Build Coastguard Worker 707*35238bceSAndroid Build Coastguard Worker void main() 708*35238bceSAndroid Build Coastguard Worker { 709*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(1.0)); 710*35238bceSAndroid Build Coastguard Worker } 711*35238bceSAndroid Build Coastguard Worker "" 712*35238bceSAndroid Build Coastguard Worker end 713*35238bceSAndroid Build Coastguard Worker 714*35238bceSAndroid Build Coastguard Worker case use_function_before_declaration 715*35238bceSAndroid Build Coastguard Worker version 300 es 716*35238bceSAndroid Build Coastguard Worker expect compile_fail 717*35238bceSAndroid Build Coastguard Worker both "" 718*35238bceSAndroid Build Coastguard Worker #version 300 es 719*35238bceSAndroid Build Coastguard Worker precision mediump float; 720*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 721*35238bceSAndroid Build Coastguard Worker 722*35238bceSAndroid Build Coastguard Worker float func (float x) { return bar(x); } 723*35238bceSAndroid Build Coastguard Worker float bar (float x) { return x; } 724*35238bceSAndroid Build Coastguard Worker 725*35238bceSAndroid Build Coastguard Worker void main() 726*35238bceSAndroid Build Coastguard Worker { 727*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(1.0)); 728*35238bceSAndroid Build Coastguard Worker } 729*35238bceSAndroid Build Coastguard Worker "" 730*35238bceSAndroid Build Coastguard Worker end 731*35238bceSAndroid Build Coastguard Worker 732*35238bceSAndroid Build Coastguard Worker case use_variable_from_block_in_outer_scope 733*35238bceSAndroid Build Coastguard Worker version 300 es 734*35238bceSAndroid Build Coastguard Worker expect compile_fail 735*35238bceSAndroid Build Coastguard Worker both "" 736*35238bceSAndroid Build Coastguard Worker #version 300 es 737*35238bceSAndroid Build Coastguard Worker precision mediump float; 738*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 739*35238bceSAndroid Build Coastguard Worker 740*35238bceSAndroid Build Coastguard Worker void main() 741*35238bceSAndroid Build Coastguard Worker { 742*35238bceSAndroid Build Coastguard Worker { 743*35238bceSAndroid Build Coastguard Worker float a = 1.0; 744*35238bceSAndroid Build Coastguard Worker } 745*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 746*35238bceSAndroid Build Coastguard Worker } 747*35238bceSAndroid Build Coastguard Worker "" 748*35238bceSAndroid Build Coastguard Worker end 749*35238bceSAndroid Build Coastguard Worker 750*35238bceSAndroid Build Coastguard Worker case use_variable_from_if_in_outer_scope 751*35238bceSAndroid Build Coastguard Worker version 300 es 752*35238bceSAndroid Build Coastguard Worker expect compile_fail 753*35238bceSAndroid Build Coastguard Worker both "" 754*35238bceSAndroid Build Coastguard Worker #version 300 es 755*35238bceSAndroid Build Coastguard Worker precision mediump float; 756*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 757*35238bceSAndroid Build Coastguard Worker 758*35238bceSAndroid Build Coastguard Worker void main() 759*35238bceSAndroid Build Coastguard Worker { 760*35238bceSAndroid Build Coastguard Worker if (true) 761*35238bceSAndroid Build Coastguard Worker float a = 1.0; 762*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 763*35238bceSAndroid Build Coastguard Worker } 764*35238bceSAndroid Build Coastguard Worker "" 765*35238bceSAndroid Build Coastguard Worker end 766*35238bceSAndroid Build Coastguard Worker 767*35238bceSAndroid Build Coastguard Worker case use_variable_from_else_in_outer_scope 768*35238bceSAndroid Build Coastguard Worker version 300 es 769*35238bceSAndroid Build Coastguard Worker expect compile_fail 770*35238bceSAndroid Build Coastguard Worker both "" 771*35238bceSAndroid Build Coastguard Worker #version 300 es 772*35238bceSAndroid Build Coastguard Worker precision mediump float; 773*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 774*35238bceSAndroid Build Coastguard Worker 775*35238bceSAndroid Build Coastguard Worker void main() 776*35238bceSAndroid Build Coastguard Worker { 777*35238bceSAndroid Build Coastguard Worker if (false) 778*35238bceSAndroid Build Coastguard Worker float a = 1.0; 779*35238bceSAndroid Build Coastguard Worker else 780*35238bceSAndroid Build Coastguard Worker float b = 2.0; 781*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(b); 782*35238bceSAndroid Build Coastguard Worker } 783*35238bceSAndroid Build Coastguard Worker "" 784*35238bceSAndroid Build Coastguard Worker end 785*35238bceSAndroid Build Coastguard Worker 786*35238bceSAndroid Build Coastguard Worker case use_variable_from_if_in_else 787*35238bceSAndroid Build Coastguard Worker version 300 es 788*35238bceSAndroid Build Coastguard Worker expect compile_fail 789*35238bceSAndroid Build Coastguard Worker both "" 790*35238bceSAndroid Build Coastguard Worker #version 300 es 791*35238bceSAndroid Build Coastguard Worker precision mediump float; 792*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 793*35238bceSAndroid Build Coastguard Worker 794*35238bceSAndroid Build Coastguard Worker void main() 795*35238bceSAndroid Build Coastguard Worker { 796*35238bceSAndroid Build Coastguard Worker float a = 1.0; 797*35238bceSAndroid Build Coastguard Worker if (true) 798*35238bceSAndroid Build Coastguard Worker { 799*35238bceSAndroid Build Coastguard Worker float b = 2.0; 800*35238bceSAndroid Build Coastguard Worker } 801*35238bceSAndroid Build Coastguard Worker else 802*35238bceSAndroid Build Coastguard Worker { 803*35238bceSAndroid Build Coastguard Worker a = b; 804*35238bceSAndroid Build Coastguard Worker } 805*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(a); 806*35238bceSAndroid Build Coastguard Worker } 807*35238bceSAndroid Build Coastguard Worker "" 808*35238bceSAndroid Build Coastguard Worker end 809*35238bceSAndroid Build Coastguard Worker 810*35238bceSAndroid Build Coastguard Worker case use_variable_from_for_init_statement_in_outer_scope 811*35238bceSAndroid Build Coastguard Worker version 300 es 812*35238bceSAndroid Build Coastguard Worker expect compile_fail 813*35238bceSAndroid Build Coastguard Worker both "" 814*35238bceSAndroid Build Coastguard Worker #version 300 es 815*35238bceSAndroid Build Coastguard Worker precision mediump float; 816*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 817*35238bceSAndroid Build Coastguard Worker 818*35238bceSAndroid Build Coastguard Worker void main() 819*35238bceSAndroid Build Coastguard Worker { 820*35238bceSAndroid Build Coastguard Worker float x = 0.0; 821*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < 10; i++) 822*35238bceSAndroid Build Coastguard Worker { 823*35238bceSAndroid Build Coastguard Worker x += sin(i); 824*35238bceSAndroid Build Coastguard Worker } 825*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(float(i)); 826*35238bceSAndroid Build Coastguard Worker } 827*35238bceSAndroid Build Coastguard Worker "" 828*35238bceSAndroid Build Coastguard Worker end 829*35238bceSAndroid Build Coastguard Worker 830*35238bceSAndroid Build Coastguard Worker case use_variable_from_while_condition_in_outer_scope 831*35238bceSAndroid Build Coastguard Worker version 300 es 832*35238bceSAndroid Build Coastguard Worker expect compile_fail 833*35238bceSAndroid Build Coastguard Worker both "" 834*35238bceSAndroid Build Coastguard Worker #version 300 es 835*35238bceSAndroid Build Coastguard Worker precision mediump float; 836*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 837*35238bceSAndroid Build Coastguard Worker 838*35238bceSAndroid Build Coastguard Worker void main() 839*35238bceSAndroid Build Coastguard Worker { 840*35238bceSAndroid Build Coastguard Worker int a = 1; 841*35238bceSAndroid Build Coastguard Worker while (bool b = (a == 1)) 842*35238bceSAndroid Build Coastguard Worker { 843*35238bceSAndroid Build Coastguard Worker a++; 844*35238bceSAndroid Build Coastguard Worker } 845*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(float(b)); 846*35238bceSAndroid Build Coastguard Worker } 847*35238bceSAndroid Build Coastguard Worker "" 848*35238bceSAndroid Build Coastguard Worker end 849*35238bceSAndroid Build Coastguard Worker 850*35238bceSAndroid Build Coastguard Worker case use_parameter_names_from_function_declaration 851*35238bceSAndroid Build Coastguard Worker version 300 es 852*35238bceSAndroid Build Coastguard Worker expect compile_fail 853*35238bceSAndroid Build Coastguard Worker both "" 854*35238bceSAndroid Build Coastguard Worker #version 300 es 855*35238bceSAndroid Build Coastguard Worker precision mediump float; 856*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 857*35238bceSAndroid Build Coastguard Worker 858*35238bceSAndroid Build Coastguard Worker float func(float a, float b); 859*35238bceSAndroid Build Coastguard Worker 860*35238bceSAndroid Build Coastguard Worker float func(float x, float y) { return a+b; } 861*35238bceSAndroid Build Coastguard Worker 862*35238bceSAndroid Build Coastguard Worker void main() 863*35238bceSAndroid Build Coastguard Worker { 864*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(1.0, 2.0)); 865*35238bceSAndroid Build Coastguard Worker } 866*35238bceSAndroid Build Coastguard Worker "" 867*35238bceSAndroid Build Coastguard Worker end 868*35238bceSAndroid Build Coastguard Worker 869*35238bceSAndroid Build Coastguard Worker case variable_not_visible_in_own_initializer 870*35238bceSAndroid Build Coastguard Worker version 300 es 871*35238bceSAndroid Build Coastguard Worker expect compile_fail 872*35238bceSAndroid Build Coastguard Worker both "" 873*35238bceSAndroid Build Coastguard Worker #version 300 es 874*35238bceSAndroid Build Coastguard Worker precision mediump float; 875*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 876*35238bceSAndroid Build Coastguard Worker 877*35238bceSAndroid Build Coastguard Worker void main() 878*35238bceSAndroid Build Coastguard Worker { 879*35238bceSAndroid Build Coastguard Worker float x = x; 880*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(x); 881*35238bceSAndroid Build Coastguard Worker } 882*35238bceSAndroid Build Coastguard Worker "" 883*35238bceSAndroid Build Coastguard Worker end 884*35238bceSAndroid Build Coastguard Worker 885*35238bceSAndroid Build Coastguard Worker case local_variable_hides_function_parameter 886*35238bceSAndroid Build Coastguard Worker version 300 es 887*35238bceSAndroid Build Coastguard Worker expect compile_fail 888*35238bceSAndroid Build Coastguard Worker both "" 889*35238bceSAndroid Build Coastguard Worker #version 300 es 890*35238bceSAndroid Build Coastguard Worker precision mediump float; 891*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 892*35238bceSAndroid Build Coastguard Worker float func (float inp, float x) { int x = 5.0; return inp + x - 5.0; } 893*35238bceSAndroid Build Coastguard Worker 894*35238bceSAndroid Build Coastguard Worker void main() 895*35238bceSAndroid Build Coastguard Worker { 896*35238bceSAndroid Build Coastguard Worker ${POSITION_FRAG_COLOR} = vec4(func(1.0, 2.0)); 897*35238bceSAndroid Build Coastguard Worker } 898*35238bceSAndroid Build Coastguard Worker "" 899*35238bceSAndroid Build Coastguard Worker end 900*35238bceSAndroid Build Coastguard Worker 901*35238bceSAndroid Build Coastguard Workerend # invalid 902