Elements. Build native projects for any modern development platform, using the language(s) of your choice. Oxygene (Object Pascal), C#, Swift, Java, Go. | RemObjects Software

AllLanguageFeatures

Language: Oxygene, Platform: Echoes, Category: Language
https://github.com/remobjects/ElementsSamples/tree/master/Oxygene/Echoes/Language/AllLanguageFeatures

ClassContracts.pas

namespace AllLanguageFeatures;

interface

type
  ClassContracts = public class
  private
    var a,b,c,d: integer;
    class var x,y,z: string;
  public
    method bar; 
  private invariants
    a > b;
    a+b < c;
  public invariants
    a+b+c < d;
  private class invariants
    //assigned(z);
    //length(z) > 35;
  public class invariants
    //x+y = z;
  assembly 
    method foo; 
  end;
  
implementation

method ClassContracts.foo; 
require
  a > b < c;
begin
  bar();
end;

method ClassContracts.bar; 
begin
  foo();
ensure
  length(z) = old length(z)+5;
end;

end.