Какую проверку стиля выполняет -gnatyo? - PullRequest
2 голосов
/ 27 марта 2019

Руководство гласит:

Проверьте порядок тел подпрограмм.Если буква o появляется в строке после -gnaty, тогда все тела подпрограмм в данной области (например, тело пакета) должны быть в алфавитном порядке.Правило упорядочения использует обычные правила Ada для сравнения строк, игнорируя регистр букв, за исключением того, что если есть конечный числовой суффикс, то значение этого суффикса используется в упорядочении (например, Junk2 предшествует Junk10).

Я так понимаю, что Junk2, идущий за Junk10, - это реальное вдохновение для применения нечетного стиля.Но что является примером некоторого кода, который фактически вызывает это?Я не мог заставить эту опцию жаловаться с неупорядоченными определениями функций или телами задач.Например, я не получаю жалоб при компиляции следующего с gnat make -gnatyo:

procedure Disordered is
   function Test return Natural;
   function Zest return Natural;

   --  disordered function bodies
   function Zest return Natural is (1);
   function Test return Natural is (2);
begin
   null;
end Disordered;

1 Ответ

5 голосов
/ 27 марта 2019

У вас есть:

   --  disordered function bodies
   function Zest return Natural is (1);
   function Test return Natural is (2);

но технически это не тела подпрограмм. Они называются функциями выражения. Причина такого четкого разделения заключается в том, что тела подпрограмм недопустимы в спецификациях пакетов, тогда как функции выражений разрешены. Использование реальных тел подпрограмм в вашем примере даст ожидаемое предупреждение о стиле:

   function Zest return Natural is 
   begin
      return 1;
   end Zest;

   function Test return Natural is
   begin
      return 2;
   end Test;

(а поскольку вы упомянули тела задач; они также не являются телами подпрограмм)

...