mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
- Introduce $vaarg[...] syntax and deprecate the old $vaarg(...).
- Similar change to `$vasplat`: `$vasplat` and `$vasplat[1..]`.
This commit is contained in:
@@ -6,10 +6,10 @@ import std::io;
|
||||
macro print_type_info(...)
|
||||
{
|
||||
$for (var $i = 0; $i < $vacount; $i++)
|
||||
io::printfn("type: %s", $vatype($i).nameof);
|
||||
io::printfn("%s.sizeof = %d", $vatype($i).nameof, $vatype($i).sizeof);
|
||||
io::printfn("%s.min = %s", $vatype($i).nameof, $vatype($i).min);
|
||||
io::printfn("%s.max = %s\n", $vatype($i).nameof, $vatype($i).max);
|
||||
io::printfn("type: %s", $vatype[$i].nameof);
|
||||
io::printfn("%s.sizeof = %d", $vatype[$i].nameof, $vatype[$i].sizeof);
|
||||
io::printfn("%s.min = %s", $vatype[$i].nameof, $vatype[$i].min);
|
||||
io::printfn("%s.max = %s\n", $vatype[$i].nameof, $vatype[$i].max);
|
||||
$endfor;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
macro foo(...)
|
||||
{
|
||||
$vaarg("hello"); // #error: Expected the argument index here
|
||||
$vaarg["hello"]; // #error: Expected the argument index here
|
||||
int x;
|
||||
$vaarg(x); // #error: Vararg functions need a constant argument
|
||||
$vaarg(-1); // #error: negative
|
||||
$vaarg(100); // #error: varargs exist
|
||||
$vaarg[x]; // #error: Vararg functions need a constant argument
|
||||
$vaarg[-1]; // #error: negative
|
||||
$vaarg[100]; // #error: varargs exist
|
||||
}
|
||||
|
||||
macro foo2(...)
|
||||
{
|
||||
$vaconst(0);
|
||||
$vaconst[0];
|
||||
}
|
||||
|
||||
macro foo3(...)
|
||||
{
|
||||
$vatype(0) a;
|
||||
$vatype[0] a;
|
||||
}
|
||||
fn void main()
|
||||
{
|
||||
|
||||
@@ -6,10 +6,10 @@ import std::io;
|
||||
|
||||
macro @foo(...)
|
||||
{
|
||||
int i = $vaarg(1) + $vaarg(1);
|
||||
int j = $vaexpr(2) + $vaexpr(2);
|
||||
int i = $vaarg[1] + $vaarg[1];
|
||||
int j = $vaexpr[2] + $vaexpr[2];
|
||||
$for (var $i = 0; $i < $vacount; $i++)
|
||||
io::printfn("%d", $vaarg($i));
|
||||
io::printfn("%d", $vaarg[$i]);
|
||||
$endfor;
|
||||
}
|
||||
|
||||
@@ -17,9 +17,9 @@ macro foo2(...)
|
||||
{
|
||||
$for (var $i = 0; $i < $vacount; $i++)
|
||||
{
|
||||
$vatype($i) x;
|
||||
$vatype[$i] x;
|
||||
}
|
||||
io::printfn("%s", $vatype($i).nameof);
|
||||
io::printfn("%s", $vatype[$i].nameof);
|
||||
$endfor;
|
||||
}
|
||||
|
||||
@@ -34,9 +34,9 @@ macro foo3(...)
|
||||
|
||||
macro @foo4(...)
|
||||
{
|
||||
$typeof(*$varef(0)) a = *$varef(0);
|
||||
*$varef(0) = *$varef(1);
|
||||
*$varef(1) = a;
|
||||
$typeof(*$varef[0]) a = *$varef[0];
|
||||
*$varef[0] = *$varef[1];
|
||||
*$varef[1] = a;
|
||||
}
|
||||
fn int ping(int val)
|
||||
{
|
||||
|
||||
@@ -4,47 +4,47 @@ import std::io;
|
||||
|
||||
macro @hello(...)
|
||||
{
|
||||
int[*] a = { 1, $vasplat(), 3 };
|
||||
int[*] a = { 1, $vasplat, 3 };
|
||||
foreach (i, x : a) io::printfn("%d: %d", i, x);
|
||||
}
|
||||
|
||||
macro @hello1(...)
|
||||
{
|
||||
int[*] a = { 1, $vasplat() };
|
||||
int[*] a = { 1, $vasplat };
|
||||
foreach (i, x : a) io::printfn("x:%d: %d", i, x);
|
||||
}
|
||||
|
||||
macro @hello2(...)
|
||||
{
|
||||
int[*] a = { $vasplat(), 888 };
|
||||
int[*] a = { $vasplat, 888 };
|
||||
foreach (i, x : a) io::printfn("x:%d: %d", i, x);
|
||||
}
|
||||
|
||||
macro @hello3(...)
|
||||
{
|
||||
int[*] a = { $vasplat() };
|
||||
int[*] a = { $vasplat };
|
||||
foreach (i, x : a) io::printfn("x:%d: %d", i, x);
|
||||
}
|
||||
|
||||
macro @hello4(...)
|
||||
{
|
||||
int[*] a = { 5, $vasplat(2..4), 77 };
|
||||
int[*] a = { 5, $vasplat[2..4], 77 };
|
||||
foreach (i, x : a) io::printfn("y:%d: %d", i, x);
|
||||
}
|
||||
|
||||
macro @hello5(...)
|
||||
{
|
||||
int[*] a = { 5, $vasplat(2..), 77 };
|
||||
int[*] a = { 5, $vasplat[2..], 77 };
|
||||
foreach (i, x : a) io::printfn("y:%d: %d", i, x);
|
||||
int[*] b = { 55, $vasplat(2..^2), 88 };
|
||||
int[*] b = { 55, $vasplat[2..^2], 88 };
|
||||
foreach (i, x : b) io::printfn("z:%d: %d", i, x);
|
||||
int[*] c = { 55, $vasplat(0:^2), 88 };
|
||||
int[*] c = { 55, $vasplat[0:^2], 88 };
|
||||
foreach (i, x : c) io::printfn("zz:%d: %d", i, x);
|
||||
}
|
||||
|
||||
macro @hello6(...)
|
||||
{
|
||||
@hello(66, $vasplat());
|
||||
@hello(66, $vasplat);
|
||||
}
|
||||
fn void main()
|
||||
{
|
||||
|
||||
@@ -5,7 +5,7 @@ import std::io;
|
||||
macro test(start, ...)
|
||||
{
|
||||
$for (var $i = 0; $i < $vacount; $i++)
|
||||
for ($vatype($i) i = ($vatype($i))start; i < 5; i+=2)
|
||||
for ($vatype[$i] i = ($vatype[$i])start; i < 5; i+=2)
|
||||
{
|
||||
assert(math::is_even(i));
|
||||
assert(i.is_even());
|
||||
|
||||
Reference in New Issue
Block a user