Problem with macro example
Closed this issue · 1 comments
Thanks for the beautiful section on Macros, I learned a lot!
I have a problem with the following macro, which does not compile (beta 0.1.029):
macro :: () -> int #expand {
if a <
b {
defer print("Defer inside macro\n");
return "Backtick return macro";
}
return 1;
}
It gives the compilation error:
D:/Jai/The book of Jai/Chapter 9 - Metaprogramming - Compile-time code execution/code/macros.jai:91,31: Info: While expanding macro 'macro2' here...
print("max is %\n", maxm(b, c)); // => max is 7
print("macro2 returns %\n", macro2()); // => 1
D:/Jai/The book of Jai/Chapter 9 - Metaprogramming - Compile-time code execution/code/macros.jai:29,6: Error: Too many return values: Wanted 0, got 1.
if `b < `c {
`defer print("Defer inside macro\n");
`return "Backtick return macro";
D:/Jai/The book of Jai/Chapter 9 - Metaprogramming - Compile-time code execution/code/macros.jai:82,9: Info: ... Here is the procedure being called.
I don't know how to correct this, changing the returned string (which doesn't seem ok because return type is int) to `return 0 gives the same error.
`return 1 also doesn't help.
I don't know how to correct this example.
I added a clarification to clear up the confusion within the example. Hopefully the correction clears up the problems.