Extend "var" to allow type inference on variables.

This commit is contained in:
Christoffer Lerno
2022-10-13 09:26:15 +02:00
committed by Christoffer Lerno
parent 5e184f04e7
commit 5d9a7ab0a6
8 changed files with 155 additions and 27 deletions

View File

@@ -0,0 +1,40 @@
module test;
import std::io;
macro @foo(;@body)
{
var i = 1.0;
@body();
}
fn void main()
{
@foo() { int j = 1; };
@foo() { var j = 1.0; }; // #error: is only allowed inside
}
fn void test()
{
var g = 1; // #error: is only allowed inside
}
macro void test2m()
{
var h = { 1, 2 }; // #error: cannot be inferred
}
fn void test2()
{
test2m();
}
struct Foo { int a; }
macro void test3m()
{
var $foo = Foo.membersof;
var h = $foo[0]; // #error: compile time type
}
fn void test3()
{
test3m();
}