title: Ada suppress unreachable code or missing return
body: <p>I have a tagged type that implements a number of functions. In one case I need one of these functions to instead enter an infinite loop. Unfortunately as far as I can tell there is no way for me to compile this such that it doesn't raise a warning. I wish to still use <code>-gnatwe</code> to ensure there are no warnings in my code, but how can I implement such a function.</p>
  
  <p>Here is what the function looks like:</p>
  
  <pre><code>function Foo (This : Some_Type) return Some_Type'Class is
  begin
      loop
          Do_Useful_Stuff_Indefinitely_With (This);
      end loop;
  
      -- return This; (if needed?)
  end Foo;
  </code></pre>
  
  <p>I have tried <code>pragma (No_Return)</code> except that is only applicable for procedures (and the <code>Foo</code> function is used as a proper function elsewhere so must have the same signature).</p>
  
  <p>I also tried <code>pragma Suppress (All_Checks)</code> but that still raised a warning for unreachable code or missing return statement error.</p>
  
  <p>Is there any way whatsoever to have a once-off function that runs forever without raising a warning?</p>