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

时间:2019-03-27 02:41:42

标签: ada gnat

manual的内容为:

  

检查子程序主体的顺序。如果字母-出现在-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 个答案:

答案 0 :(得分:5)

您有:

   --  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;

(并且由于您提到了任务主体;它们也不是子程序主体)