36-defines.ha (1213B)
1 use rt; 2 3 fn import() void = { 4 assert(rt::compile(" 5 use a = rt; 6 def b = a::TESTDEFINE; 7 ", "TESTDEFINE=1": rt::define) as rt::exited != rt::EXIT_SUCCESS); 8 }; 9 10 fn mandatory() void = { 11 assert(rt::compile(" 12 def TESTDEFINE = TESTDEFINE; 13 ", "TESTDEFINE=1": rt::define) as rt::exited == rt::EXIT_SUCCESS); 14 assert(rt::compile(" 15 def TESTDEFINE = TESTDEFINE; 16 ") as rt::exited != rt::EXIT_SUCCESS); 17 }; 18 19 fn optional() void = { 20 assert(rt::compile(" 21 def TESTDEFINE = 1; 22 fn main() void = { 23 static assert(TESTDEFINE == 2); 24 }; 25 ", "TESTDEFINE=2": rt::define) as rt::exited == rt::EXIT_SUCCESS); 26 assert(rt::compile(" 27 def TESTDEFINE = 1; 28 fn main() void = { 29 static assert(TESTDEFINE == 1); 30 }; 31 ") as rt::exited == rt::EXIT_SUCCESS); 32 }; 33 34 fn compatibility() void = { 35 assert(rt::compile(" 36 def TESTDEFINE: int = 0; 37 ", "TESTDEFINE:int=1": rt::define) as rt::exited == rt::EXIT_SUCCESS); 38 assert(rt::compile(" 39 def TESTDEFINE: int = 0; 40 ", "TESTDEFINE:uint=1": rt::define) as rt::exited != rt::EXIT_SUCCESS); 41 assert(rt::compile(" 42 const TEST = 1; 43 ", "TEST=0": rt::define) as rt::exited != rt::EXIT_SUCCESS); 44 }; 45 46 export fn main() void = { 47 import(); 48 mandatory(); 49 optional(); 50 compatibility(); 51 };