-gnatyo实际执行什么样式检查?

Jul*_*ren 2 ada gnat

手册内容如下:

检查子程序主体的顺序。如果字母-在出现在-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;
Run Code Online (Sandbox Code Playgroud)

egi*_*lhh 5

你有:

   --  disordered function bodies
   function Zest return Natural is (1);
   function Test return Natural is (2);
Run Code Online (Sandbox Code Playgroud)

但是从技术上讲,它们不是子程序主体。它们称为表达式函数。这种明显分离的原因是程序包规范中不允许子程序主体,而表达式功能则允许。在示例中使用实际的子程序主体将给出预期的样式警告:

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

   function Test return Natural is
   begin
      return 2;
   end Test;
Run Code Online (Sandbox Code Playgroud)

(并且因为您提到了任务主体;它们也不是子计划主体)