В работе с javassist обнаружилось несколько интересных моментов:
1) компилятор не знает, что такое for (each).
2) парсер не проверяет код (только явные ошибки).
3) верификатор jvm кода не сообщает положения ошибки.
Таким образом, вы вправе передать компилятору на вход вот такое: { call() = 1; }... и он это прожует. То есть, вы не получите на выходе SyntaxError исключение. Вместо этого, вы получите исключение верификатора jvm VerifyError, которое будет содержать нечто вроде: в вашем методе ... с такой-то сигнатурой ... на вершине стэка ожидалось интовое значение. Выяснить место ошибки автоматически - не получится.
Комментариев нет:
Отправить комментарий