Вы точно не знаете, что компилятор будет делать именно то, что вы ожидаете. Причина, конечно, в том, что компилятор является частичкой программного обеспечения и поэтому подвержен ошибкам.
Авторы компиляторов имеют преимущество работы с высококачественной спецификацией, в то время как остальным из нас приходится выяснять, что мы делаем, по мере продвижения вперед. Тем не менее, спецификации компилятора также имеют ошибки и сложные детали с тонкими взаимодействиями. Так что не совсем легко понять, что должен делать компилятор.
Тем не менее, как только вы решите, что, по вашему мнению, означает языковая спецификация, вы можете написать хороший, быстрый, автоматизированный тест для каждого нюанса. Вот где написание компилятора имеет огромное преимущество перед написанием других видов программного обеспечения: в тестировании. Каждая ошибка становится автоматизированным тестовым примером, и набор тестов может быть очень тщательным. Производители компиляторов имеют гораздо больше средств для проверки правильности компилятора, чем вы (у вас уже есть дневная работа, верно?).
Что это значит для вас? Это означает, что вы должны быть открыты к возможностям ошибок в вашем компиляторе, но есть вероятность, что вы сами их не найдете.
Я бы выбрал поставщика компилятора, который вряд ли обанкротится в ближайшее время, у которого есть история высокого качества в их компиляторах, и который продемонстрировал свою способность обслуживать (исправлять) свои продукты. Компиляторы, похоже, со временем становятся более корректными, поэтому я бы выбрал тот, который был где-то десять или два.
Сосредоточьте свое внимание на правильном коде. Если он понятен и прост , то когда вы do нажмете ошибку компилятора, у вас не будет думать очень трудно, чтобы решить, в чем проблема. Напишите хорошие модульные тесты , которые гарантируют, что ваш код будет делать то, что вы ожидаете.