GLSL: __FILE__ macro not set properly

It seems that the FILE macro does not get set properly if compiling a shader from multiple sources. The following Fragment

const char* sources[] = {
  "#define _NOT_EMPTY_\n",
  "#if(__FILE__ == 0)\n"
  "#error __FILE__ not set\n"
  "#endif\n",
  "#if(__LINE__!=1)\n"
  "#error __LINE__ not set\n"
  "#endif\n",
  "void main() {}\n"
};
char errorLog[1024];
GLuint shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shader, 4, sources, 0);
glCompileShader(shader);
glGetShaderInfoLog(shader, 1024, 0, errorLog);
printf("%s\n", errorLog);
glDeleteShader(shader);

reproduces the problem: The FILE-macro seems to evaluate to zero no matter in what source string it appears and the LINE-macro evaluates to the line-number in the concatenation of all source-strings. I mean to remember that this worked ok in older Driver-Version (Prior to 310 I guess).