У нас недавно возникла проблема ( ANTLR «Невозможно запустить отладчик. Тайм-аут ожидания подключения к удаленному анализатору». ), когда возникла ошибка времени выполнения, которая могла быть вызвана чувствительностью к регистру в (переменных) именах и зависел от ОС. Это было в ANTLR, но мне более интересно, существуют ли общие случаи (на любом языке), когда имена различаются только в том случае, когда программа компилируется, но есть ошибки времени выполнения из-за конфликтов имен. Существует ли разница между UNIX и Windows?
В качестве возможного примера я могу создать два Java-класса в одном пакете:
Foo
в Foo.java
и
foo
в foo.java
в UNIX, пока я не могу сделать то же самое в Windows? Если нет, блокируется ли это компилятором и какое ограничение он накладывает на равенство регистра? И как другие распространенные языки относятся к этой проблеме?
[Конечно, я сознательно не пытаюсь это сделать, но ошибки появляются, и я в значительной степени полагаюсь на компиляторы, чтобы их обнаружить.]