public void Functions()
{
ParseAndWalk(@"func f(){}");
ParseAndWalk(@"f();");
ParseAndWalk(@"f()()();");
ParseAndWalk(@"f(1, a, 'b');");
ParseAndWalk(@"f(1, a, null);");
ParseAndWalk(@"(func(){})(a, b);");
ParseAndWalk(@"(func f(){})(1, '2');");
ParseAndWalk(@"func f(){return a;}");
ParseAndWalk(@"o.f();");
ParseAndWalk(@"o.f();");
ParseAndWalk(@"o.f(p);");
ParseAndWalk(@"o.p.f(p);");
ParseAndWalk(@"f(1)(1);");
ParseAndWalk(@"f[1](1);");
ParseAndWalk(@"f[1](1).p;");
ParseAndWalk(@"o.f(p)[1](p);");
ParseAndWalk(@"Console.WriteLine('123');");
ParseAndWalk(@"f(*a, *b);");
ParseAndWalk(@"func f(a, *b){};");
}