Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Предупреждения об избыточных функциях и внешних объявлениях #326

Open
4 tasks
Mazdaywik opened this issue Oct 23, 2020 · 0 comments
Assignees
Labels

Comments

@Mazdaywik
Copy link
Member

Нужно выводить следующие предупреждения:

  • Функция не используется. Это значит, что функция не является точкой входа и прямо или косвенно не доступна из точек входа. Тот факт, что функция вызывается из другой функции, ничего не говорит — в файле может быть несколько взаимно-рекурсивных локальных функций, которые никогда не вызываются.

    Если в файле используется хотя бы одна метафункция, значит считаем, что все локальные функции используются.

  • Extern-объявление не используется. Аналогично предыдущему, но метафункции предупреждение не подавляют. Метафункции способны вызывать внешние функции по имени, даже если их нет в области видимости.

  • Для определённой функции есть extern-объявление. Оно избыточное, на него нужно указать.

  • Несколько extern-объявлений для одной функции.

Данную задачу невозможно адекватно решить, пока в языке есть $INCLUDE и нативные вставки. Поэтому решать её нужно, когда эти устаревшие элементы (#318) будут удалены из компилятора.

Неиспользуемые функции могут располагаться и в прелюдии — на них предупреждение выдаваться не должно. Возможная реализация: при сканировании прелюдии координаты токенов помечать особым образом, для помеченных координат предупреждения не выдавать.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant