1e5c31af7Sopenharmony_cigroup if "If Statements" 2e5c31af7Sopenharmony_ci 3e5c31af7Sopenharmony_ci case single_statement 4e5c31af7Sopenharmony_ci version 300 es 5e5c31af7Sopenharmony_ci values 6e5c31af7Sopenharmony_ci { 7e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 8e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 1.0 ]; 9e5c31af7Sopenharmony_ci } 10e5c31af7Sopenharmony_ci 11e5c31af7Sopenharmony_ci both "" 12e5c31af7Sopenharmony_ci #version 300 es 13e5c31af7Sopenharmony_ci precision mediump float; 14e5c31af7Sopenharmony_ci ${DECLARATIONS} 15e5c31af7Sopenharmony_ci void main() 16e5c31af7Sopenharmony_ci { 17e5c31af7Sopenharmony_ci out0 = 0.0; 18e5c31af7Sopenharmony_ci if (in0 >= 1.0) 19e5c31af7Sopenharmony_ci out0 = 1.0; 20e5c31af7Sopenharmony_ci ${OUTPUT} 21e5c31af7Sopenharmony_ci } 22e5c31af7Sopenharmony_ci "" 23e5c31af7Sopenharmony_ci end 24e5c31af7Sopenharmony_ci 25e5c31af7Sopenharmony_ci case compound_statement 26e5c31af7Sopenharmony_ci version 300 es 27e5c31af7Sopenharmony_ci values 28e5c31af7Sopenharmony_ci { 29e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 30e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 1.0 ]; 31e5c31af7Sopenharmony_ci output float out1 = [ 1.0 | 0.0 | 0.0 ]; 32e5c31af7Sopenharmony_ci } 33e5c31af7Sopenharmony_ci 34e5c31af7Sopenharmony_ci both "" 35e5c31af7Sopenharmony_ci #version 300 es 36e5c31af7Sopenharmony_ci precision mediump float; 37e5c31af7Sopenharmony_ci ${DECLARATIONS} 38e5c31af7Sopenharmony_ci void main() 39e5c31af7Sopenharmony_ci { 40e5c31af7Sopenharmony_ci out0 = 0.0; 41e5c31af7Sopenharmony_ci out1 = 1.0; 42e5c31af7Sopenharmony_ci if (in0 >= 1.0) 43e5c31af7Sopenharmony_ci { 44e5c31af7Sopenharmony_ci out0 = 1.0; 45e5c31af7Sopenharmony_ci out1 = 0.0; 46e5c31af7Sopenharmony_ci } 47e5c31af7Sopenharmony_ci ${OUTPUT} 48e5c31af7Sopenharmony_ci } 49e5c31af7Sopenharmony_ci "" 50e5c31af7Sopenharmony_ci end 51e5c31af7Sopenharmony_ci 52e5c31af7Sopenharmony_ci case sequence_statements 53e5c31af7Sopenharmony_ci version 300 es 54e5c31af7Sopenharmony_ci values 55e5c31af7Sopenharmony_ci { 56e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 57e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 1.0 ]; 58e5c31af7Sopenharmony_ci output float out1 = [ 1.0 | 0.0 | 0.0 ]; 59e5c31af7Sopenharmony_ci } 60e5c31af7Sopenharmony_ci 61e5c31af7Sopenharmony_ci both "" 62e5c31af7Sopenharmony_ci #version 300 es 63e5c31af7Sopenharmony_ci precision mediump float; 64e5c31af7Sopenharmony_ci ${DECLARATIONS} 65e5c31af7Sopenharmony_ci void main() 66e5c31af7Sopenharmony_ci { 67e5c31af7Sopenharmony_ci out0 = 0.0; 68e5c31af7Sopenharmony_ci out1 = 1.0; 69e5c31af7Sopenharmony_ci if (in0 >= 1.0) 70e5c31af7Sopenharmony_ci out0 = 1.0, out1 = 0.0; 71e5c31af7Sopenharmony_ci ${OUTPUT} 72e5c31af7Sopenharmony_ci } 73e5c31af7Sopenharmony_ci "" 74e5c31af7Sopenharmony_ci end 75e5c31af7Sopenharmony_ci 76e5c31af7Sopenharmony_ci case sequence_condition 77e5c31af7Sopenharmony_ci version 300 es 78e5c31af7Sopenharmony_ci values 79e5c31af7Sopenharmony_ci { 80e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 81e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 1.0 ]; 82e5c31af7Sopenharmony_ci output float out1 = [ 1.0 | 0.0 | 0.0 ]; 83e5c31af7Sopenharmony_ci } 84e5c31af7Sopenharmony_ci 85e5c31af7Sopenharmony_ci both "" 86e5c31af7Sopenharmony_ci #version 300 es 87e5c31af7Sopenharmony_ci precision mediump float; 88e5c31af7Sopenharmony_ci ${DECLARATIONS} 89e5c31af7Sopenharmony_ci void main() 90e5c31af7Sopenharmony_ci { 91e5c31af7Sopenharmony_ci out0 = 0.0; 92e5c31af7Sopenharmony_ci out1 = 1.0; 93e5c31af7Sopenharmony_ci if (false, in0 >= 1.0) 94e5c31af7Sopenharmony_ci out0 = 1.0, out1 = 0.0; 95e5c31af7Sopenharmony_ci ${OUTPUT} 96e5c31af7Sopenharmony_ci } 97e5c31af7Sopenharmony_ci "" 98e5c31af7Sopenharmony_ci end 99e5c31af7Sopenharmony_ci 100e5c31af7Sopenharmony_ci case complex_condition 101e5c31af7Sopenharmony_ci version 300 es 102e5c31af7Sopenharmony_ci values 103e5c31af7Sopenharmony_ci { 104e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 105e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 1.0 ]; 106e5c31af7Sopenharmony_ci output float out1 = [ 1.0 | 0.0 | 0.0 ]; 107e5c31af7Sopenharmony_ci } 108e5c31af7Sopenharmony_ci 109e5c31af7Sopenharmony_ci both "" 110e5c31af7Sopenharmony_ci #version 300 es 111e5c31af7Sopenharmony_ci precision mediump float; 112e5c31af7Sopenharmony_ci ${DECLARATIONS} 113e5c31af7Sopenharmony_ci void main() 114e5c31af7Sopenharmony_ci { 115e5c31af7Sopenharmony_ci out0 = 0.0; 116e5c31af7Sopenharmony_ci out1 = 1.0; 117e5c31af7Sopenharmony_ci if (false || (in0 >= 1.0) && (in0 - 2.0*in0 < 0.0)) 118e5c31af7Sopenharmony_ci out0 = 1.0, out1 = 0.0; 119e5c31af7Sopenharmony_ci ${OUTPUT} 120e5c31af7Sopenharmony_ci } 121e5c31af7Sopenharmony_ci "" 122e5c31af7Sopenharmony_ci end 123e5c31af7Sopenharmony_ci 124e5c31af7Sopenharmony_ci case if_else 125e5c31af7Sopenharmony_ci version 300 es 126e5c31af7Sopenharmony_ci values 127e5c31af7Sopenharmony_ci { 128e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 129e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 1.0 ]; 130e5c31af7Sopenharmony_ci } 131e5c31af7Sopenharmony_ci 132e5c31af7Sopenharmony_ci both "" 133e5c31af7Sopenharmony_ci #version 300 es 134e5c31af7Sopenharmony_ci precision mediump float; 135e5c31af7Sopenharmony_ci ${DECLARATIONS} 136e5c31af7Sopenharmony_ci void main() 137e5c31af7Sopenharmony_ci { 138e5c31af7Sopenharmony_ci if (in0 >= 1.0) 139e5c31af7Sopenharmony_ci out0 = 1.0; 140e5c31af7Sopenharmony_ci else 141e5c31af7Sopenharmony_ci out0 = 0.0; 142e5c31af7Sopenharmony_ci ${OUTPUT} 143e5c31af7Sopenharmony_ci } 144e5c31af7Sopenharmony_ci "" 145e5c31af7Sopenharmony_ci end 146e5c31af7Sopenharmony_ci 147e5c31af7Sopenharmony_ci case if_elseif 148e5c31af7Sopenharmony_ci version 300 es 149e5c31af7Sopenharmony_ci values 150e5c31af7Sopenharmony_ci { 151e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 152e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 2.0 ]; 153e5c31af7Sopenharmony_ci } 154e5c31af7Sopenharmony_ci 155e5c31af7Sopenharmony_ci both "" 156e5c31af7Sopenharmony_ci #version 300 es 157e5c31af7Sopenharmony_ci precision mediump float; 158e5c31af7Sopenharmony_ci ${DECLARATIONS} 159e5c31af7Sopenharmony_ci void main() 160e5c31af7Sopenharmony_ci { 161e5c31af7Sopenharmony_ci out0 = 0.0; 162e5c31af7Sopenharmony_ci if (in0 >= 2.0) 163e5c31af7Sopenharmony_ci out0 = 2.0; 164e5c31af7Sopenharmony_ci else if (in0 >= 1.0) 165e5c31af7Sopenharmony_ci out0 = 1.0; 166e5c31af7Sopenharmony_ci ${OUTPUT} 167e5c31af7Sopenharmony_ci } 168e5c31af7Sopenharmony_ci "" 169e5c31af7Sopenharmony_ci end 170e5c31af7Sopenharmony_ci 171e5c31af7Sopenharmony_ci case if_elseif_else 172e5c31af7Sopenharmony_ci version 300 es 173e5c31af7Sopenharmony_ci values 174e5c31af7Sopenharmony_ci { 175e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 176e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 2.0 ]; 177e5c31af7Sopenharmony_ci } 178e5c31af7Sopenharmony_ci 179e5c31af7Sopenharmony_ci both "" 180e5c31af7Sopenharmony_ci #version 300 es 181e5c31af7Sopenharmony_ci precision mediump float; 182e5c31af7Sopenharmony_ci ${DECLARATIONS} 183e5c31af7Sopenharmony_ci void main() 184e5c31af7Sopenharmony_ci { 185e5c31af7Sopenharmony_ci if (in0 >= 2.0) 186e5c31af7Sopenharmony_ci out0 = 2.0; 187e5c31af7Sopenharmony_ci else if (in0 >= 1.0) 188e5c31af7Sopenharmony_ci out0 = 1.0; 189e5c31af7Sopenharmony_ci else 190e5c31af7Sopenharmony_ci out0 = 0.0; 191e5c31af7Sopenharmony_ci ${OUTPUT} 192e5c31af7Sopenharmony_ci } 193e5c31af7Sopenharmony_ci "" 194e5c31af7Sopenharmony_ci end 195e5c31af7Sopenharmony_ci 196e5c31af7Sopenharmony_ci case mixed_if_elseif_else 197e5c31af7Sopenharmony_ci version 300 es 198e5c31af7Sopenharmony_ci values 199e5c31af7Sopenharmony_ci { 200e5c31af7Sopenharmony_ci input float in0 = [ 0.0 | 1.0 | 2.0 ]; 201e5c31af7Sopenharmony_ci output float out0 = [ 0.0 | 1.0 | 2.0 ]; 202e5c31af7Sopenharmony_ci } 203e5c31af7Sopenharmony_ci 204e5c31af7Sopenharmony_ci both "" 205e5c31af7Sopenharmony_ci #version 300 es 206e5c31af7Sopenharmony_ci precision mediump float; 207e5c31af7Sopenharmony_ci ${DECLARATIONS} 208e5c31af7Sopenharmony_ci void main() 209e5c31af7Sopenharmony_ci { 210e5c31af7Sopenharmony_ci if (in0 >= 2.0) 211e5c31af7Sopenharmony_ci { 212e5c31af7Sopenharmony_ci out0 = 2.0; 213e5c31af7Sopenharmony_ci } 214e5c31af7Sopenharmony_ci else if (in0 >= 1.0) 215e5c31af7Sopenharmony_ci out0 = 2.0, out0 = 1.0; 216e5c31af7Sopenharmony_ci else 217e5c31af7Sopenharmony_ci out0 = 0.0; 218e5c31af7Sopenharmony_ci ${OUTPUT} 219e5c31af7Sopenharmony_ci } 220e5c31af7Sopenharmony_ci "" 221e5c31af7Sopenharmony_ci end 222e5c31af7Sopenharmony_ci 223e5c31af7Sopenharmony_ci case constant_conditional_assignment_to_matrix 224e5c31af7Sopenharmony_ci version 300 es 225e5c31af7Sopenharmony_ci vertex "" 226e5c31af7Sopenharmony_ci #version 300 es 227e5c31af7Sopenharmony_ci // This variant doesn't provoke the crash seen in the versions below. 228e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 229e5c31af7Sopenharmony_ci out mediump float FragVarying; 230e5c31af7Sopenharmony_ci const float in0 = 0.0; 231e5c31af7Sopenharmony_ci void main() 232e5c31af7Sopenharmony_ci { 233e5c31af7Sopenharmony_ci mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0); 234e5c31af7Sopenharmony_ci if (in0 == 1.0) 235e5c31af7Sopenharmony_ci { 236e5c31af7Sopenharmony_ci projectionMatrix[0][0] = 1.0; 237e5c31af7Sopenharmony_ci } 238e5c31af7Sopenharmony_ci 239e5c31af7Sopenharmony_ci FragVarying = 1.0; 240e5c31af7Sopenharmony_ci gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0); 241e5c31af7Sopenharmony_ci } 242e5c31af7Sopenharmony_ci "" 243e5c31af7Sopenharmony_ci fragment "" 244e5c31af7Sopenharmony_ci #version 300 es 245e5c31af7Sopenharmony_ci precision mediump float; 246e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 247e5c31af7Sopenharmony_ci in mediump float FragVarying; 248e5c31af7Sopenharmony_ci void main() 249e5c31af7Sopenharmony_ci { 250e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0); 251e5c31af7Sopenharmony_ci } 252e5c31af7Sopenharmony_ci "" 253e5c31af7Sopenharmony_ci end 254e5c31af7Sopenharmony_ci 255e5c31af7Sopenharmony_ci case input_conditional_assignment_to_matrix 256e5c31af7Sopenharmony_ci version 300 es 257e5c31af7Sopenharmony_ci values 258e5c31af7Sopenharmony_ci { 259e5c31af7Sopenharmony_ci input float in0 = [ 0.0 ]; 260e5c31af7Sopenharmony_ci } 261e5c31af7Sopenharmony_ci vertex "" 262e5c31af7Sopenharmony_ci #version 300 es 263e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 264e5c31af7Sopenharmony_ci out mediump float FragVarying; // Necessary to reproduce. 265e5c31af7Sopenharmony_ci void main() 266e5c31af7Sopenharmony_ci { 267e5c31af7Sopenharmony_ci // Crashes with mat4 as well. Does not crash with vectors. 268e5c31af7Sopenharmony_ci mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0); 269e5c31af7Sopenharmony_ci // Testing a non-constant variable is necessary. 270e5c31af7Sopenharmony_ci if (in0 == 1.0) 271e5c31af7Sopenharmony_ci { 272e5c31af7Sopenharmony_ci // Using the matrix variable appears necessary. 273e5c31af7Sopenharmony_ci projectionMatrix[0][0] = 1.0; 274e5c31af7Sopenharmony_ci } 275e5c31af7Sopenharmony_ci 276e5c31af7Sopenharmony_ci FragVarying = 1.0; 277e5c31af7Sopenharmony_ci // Referencing the matrix is necessary though clearly the compiler 278e5c31af7Sopenharmony_ci // doesn't realize the assignment is useless. 279e5c31af7Sopenharmony_ci gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0); 280e5c31af7Sopenharmony_ci } 281e5c31af7Sopenharmony_ci "" 282e5c31af7Sopenharmony_ci fragment "" 283e5c31af7Sopenharmony_ci #version 300 es 284e5c31af7Sopenharmony_ci precision mediump float; 285e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 286e5c31af7Sopenharmony_ci in mediump float FragVarying; 287e5c31af7Sopenharmony_ci void main() 288e5c31af7Sopenharmony_ci { 289e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0); 290e5c31af7Sopenharmony_ci } 291e5c31af7Sopenharmony_ci "" 292e5c31af7Sopenharmony_ci end 293e5c31af7Sopenharmony_ci 294e5c31af7Sopenharmony_ci case uniform_conditional_assignment_to_matrix 295e5c31af7Sopenharmony_ci version 300 es 296e5c31af7Sopenharmony_ci values 297e5c31af7Sopenharmony_ci { 298e5c31af7Sopenharmony_ci uniform float uni0 = [ 0.0 ]; 299e5c31af7Sopenharmony_ci } 300e5c31af7Sopenharmony_ci vertex "" 301e5c31af7Sopenharmony_ci #version 300 es 302e5c31af7Sopenharmony_ci precision mediump float; 303e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 304e5c31af7Sopenharmony_ci out mediump float FragVarying; // Necessary to reproduce. 305e5c31af7Sopenharmony_ci void main() 306e5c31af7Sopenharmony_ci { 307e5c31af7Sopenharmony_ci // Crashes with mat4 as well. Does not crash with vectors. 308e5c31af7Sopenharmony_ci mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0); 309e5c31af7Sopenharmony_ci // Testing a non-constant variable is necessary. 310e5c31af7Sopenharmony_ci if (uni0 == 1.0) 311e5c31af7Sopenharmony_ci { 312e5c31af7Sopenharmony_ci // Using the matrix variable appears necessary. 313e5c31af7Sopenharmony_ci projectionMatrix[0][0] = 1.0; 314e5c31af7Sopenharmony_ci } 315e5c31af7Sopenharmony_ci 316e5c31af7Sopenharmony_ci FragVarying = 1.0; 317e5c31af7Sopenharmony_ci // Referencing the matrix is necessary though clearly the compiler 318e5c31af7Sopenharmony_ci // doesn't realize the assignment is useless. 319e5c31af7Sopenharmony_ci gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0); 320e5c31af7Sopenharmony_ci } 321e5c31af7Sopenharmony_ci "" 322e5c31af7Sopenharmony_ci fragment "" 323e5c31af7Sopenharmony_ci #version 300 es 324e5c31af7Sopenharmony_ci precision mediump float; 325e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 326e5c31af7Sopenharmony_ci in mediump float FragVarying; 327e5c31af7Sopenharmony_ci void main() 328e5c31af7Sopenharmony_ci { 329e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0); 330e5c31af7Sopenharmony_ci } 331e5c31af7Sopenharmony_ci "" 332e5c31af7Sopenharmony_ci end 333e5c31af7Sopenharmony_ci 334e5c31af7Sopenharmony_ciend # if 335e5c31af7Sopenharmony_ci 336e5c31af7Sopenharmony_cigroup invalid_if "Invalid If Conditionals" 337e5c31af7Sopenharmony_ci 338e5c31af7Sopenharmony_ci case missing_parenthesis 339e5c31af7Sopenharmony_ci version 300 es 340e5c31af7Sopenharmony_ci expect compile_fail 341e5c31af7Sopenharmony_ci both "" 342e5c31af7Sopenharmony_ci #version 300 es 343e5c31af7Sopenharmony_ci precision mediump float; 344e5c31af7Sopenharmony_ci ${DECLARATIONS} 345e5c31af7Sopenharmony_ci void main() 346e5c31af7Sopenharmony_ci { 347e5c31af7Sopenharmony_ci if true 348e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 349e5c31af7Sopenharmony_ci } 350e5c31af7Sopenharmony_ci "" 351e5c31af7Sopenharmony_ci end 352e5c31af7Sopenharmony_ci 353e5c31af7Sopenharmony_ci case unclosed_parenthesis 354e5c31af7Sopenharmony_ci version 300 es 355e5c31af7Sopenharmony_ci expect compile_fail 356e5c31af7Sopenharmony_ci both "" 357e5c31af7Sopenharmony_ci #version 300 es 358e5c31af7Sopenharmony_ci precision mediump float; 359e5c31af7Sopenharmony_ci ${DECLARATIONS} 360e5c31af7Sopenharmony_ci void main() 361e5c31af7Sopenharmony_ci { 362e5c31af7Sopenharmony_ci if (true 363e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 364e5c31af7Sopenharmony_ci } 365e5c31af7Sopenharmony_ci "" 366e5c31af7Sopenharmony_ci end 367e5c31af7Sopenharmony_ci 368e5c31af7Sopenharmony_ci case int_condition 369e5c31af7Sopenharmony_ci version 300 es 370e5c31af7Sopenharmony_ci expect compile_fail 371e5c31af7Sopenharmony_ci both "" 372e5c31af7Sopenharmony_ci #version 300 es 373e5c31af7Sopenharmony_ci precision mediump float; 374e5c31af7Sopenharmony_ci ${DECLARATIONS} 375e5c31af7Sopenharmony_ci void main() 376e5c31af7Sopenharmony_ci { 377e5c31af7Sopenharmony_ci if (5) 378e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 379e5c31af7Sopenharmony_ci } 380e5c31af7Sopenharmony_ci "" 381e5c31af7Sopenharmony_ci end 382e5c31af7Sopenharmony_ci 383e5c31af7Sopenharmony_ci case int_zero_condition 384e5c31af7Sopenharmony_ci version 300 es 385e5c31af7Sopenharmony_ci expect compile_fail 386e5c31af7Sopenharmony_ci both "" 387e5c31af7Sopenharmony_ci #version 300 es 388e5c31af7Sopenharmony_ci precision mediump float; 389e5c31af7Sopenharmony_ci ${DECLARATIONS} 390e5c31af7Sopenharmony_ci void main() 391e5c31af7Sopenharmony_ci { 392e5c31af7Sopenharmony_ci if (0) 393e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 394e5c31af7Sopenharmony_ci } 395e5c31af7Sopenharmony_ci "" 396e5c31af7Sopenharmony_ci end 397e5c31af7Sopenharmony_ci 398e5c31af7Sopenharmony_ci case int_one_condition 399e5c31af7Sopenharmony_ci version 300 es 400e5c31af7Sopenharmony_ci expect compile_fail 401e5c31af7Sopenharmony_ci both "" 402e5c31af7Sopenharmony_ci #version 300 es 403e5c31af7Sopenharmony_ci precision mediump float; 404e5c31af7Sopenharmony_ci ${DECLARATIONS} 405e5c31af7Sopenharmony_ci void main() 406e5c31af7Sopenharmony_ci { 407e5c31af7Sopenharmony_ci if (1) 408e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 409e5c31af7Sopenharmony_ci } 410e5c31af7Sopenharmony_ci "" 411e5c31af7Sopenharmony_ci end 412e5c31af7Sopenharmony_ci 413e5c31af7Sopenharmony_ci case int_uniform_condition 414e5c31af7Sopenharmony_ci version 300 es 415e5c31af7Sopenharmony_ci expect compile_fail 416e5c31af7Sopenharmony_ci 417e5c31af7Sopenharmony_ci both "" 418e5c31af7Sopenharmony_ci #version 300 es 419e5c31af7Sopenharmony_ci precision mediump float; 420e5c31af7Sopenharmony_ci precision mediump int; 421e5c31af7Sopenharmony_ci uniform int u0; 422e5c31af7Sopenharmony_ci ${DECLARATIONS} 423e5c31af7Sopenharmony_ci void main() 424e5c31af7Sopenharmony_ci { 425e5c31af7Sopenharmony_ci if (u0) 426e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 427e5c31af7Sopenharmony_ci } 428e5c31af7Sopenharmony_ci "" 429e5c31af7Sopenharmony_ci end 430e5c31af7Sopenharmony_ci 431e5c31af7Sopenharmony_ci case float_condition 432e5c31af7Sopenharmony_ci version 300 es 433e5c31af7Sopenharmony_ci expect compile_fail 434e5c31af7Sopenharmony_ci both "" 435e5c31af7Sopenharmony_ci #version 300 es 436e5c31af7Sopenharmony_ci precision mediump float; 437e5c31af7Sopenharmony_ci ${DECLARATIONS} 438e5c31af7Sopenharmony_ci void main() 439e5c31af7Sopenharmony_ci { 440e5c31af7Sopenharmony_ci if (5.0) 441e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 442e5c31af7Sopenharmony_ci } 443e5c31af7Sopenharmony_ci "" 444e5c31af7Sopenharmony_ci end 445e5c31af7Sopenharmony_ci 446e5c31af7Sopenharmony_ci case float_zero_condition 447e5c31af7Sopenharmony_ci version 300 es 448e5c31af7Sopenharmony_ci expect compile_fail 449e5c31af7Sopenharmony_ci both "" 450e5c31af7Sopenharmony_ci #version 300 es 451e5c31af7Sopenharmony_ci precision mediump float; 452e5c31af7Sopenharmony_ci ${DECLARATIONS} 453e5c31af7Sopenharmony_ci void main() 454e5c31af7Sopenharmony_ci { 455e5c31af7Sopenharmony_ci if (0.0) 456e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 457e5c31af7Sopenharmony_ci } 458e5c31af7Sopenharmony_ci "" 459e5c31af7Sopenharmony_ci end 460e5c31af7Sopenharmony_ci 461e5c31af7Sopenharmony_ci case float_one_condition 462e5c31af7Sopenharmony_ci version 300 es 463e5c31af7Sopenharmony_ci expect compile_fail 464e5c31af7Sopenharmony_ci both "" 465e5c31af7Sopenharmony_ci #version 300 es 466e5c31af7Sopenharmony_ci precision mediump float; 467e5c31af7Sopenharmony_ci ${DECLARATIONS} 468e5c31af7Sopenharmony_ci void main() 469e5c31af7Sopenharmony_ci { 470e5c31af7Sopenharmony_ci if (1.0) 471e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 472e5c31af7Sopenharmony_ci } 473e5c31af7Sopenharmony_ci "" 474e5c31af7Sopenharmony_ci end 475e5c31af7Sopenharmony_ci 476e5c31af7Sopenharmony_ci case sampler_condition 477e5c31af7Sopenharmony_ci version 300 es 478e5c31af7Sopenharmony_ci expect compile_fail 479e5c31af7Sopenharmony_ci both "" 480e5c31af7Sopenharmony_ci #version 300 es 481e5c31af7Sopenharmony_ci precision mediump float; 482e5c31af7Sopenharmony_ci uniform sampler2D s0; 483e5c31af7Sopenharmony_ci ${DECLARATIONS} 484e5c31af7Sopenharmony_ci void main() 485e5c31af7Sopenharmony_ci { 486e5c31af7Sopenharmony_ci if (s0) 487e5c31af7Sopenharmony_ci ${POSITION_FRAG_COLOR} = vec4(1.0); 488e5c31af7Sopenharmony_ci } 489e5c31af7Sopenharmony_ci "" 490e5c31af7Sopenharmony_ci end 491e5c31af7Sopenharmony_ci 492e5c31af7Sopenharmony_ciend # invalid_if 493