According to my understanding of the Enable or Disable section of GLSL Common Mistakes, this is a philosophical reason: shaders are written to redefine a fixed pipeline, so they should not rely on fixed pipeline conditions. You must use a different shader for every opportunity you need.
I also suggest that this may be a design choice based on the fact that the branches of the road on the GPU, and someone should have thought that you should not do such things as
if (gl_LightSource[0].enabled)
{ ... }
Firstly.
user111095
source
share