New syntax for comma expression

Richard (Rikki) Andrew Cattermole richard at cattermole.co.nz
Thu Nov 21 21:42:18 UTC 2024


On 22/11/2024 6:56 AM, Nick Treleaven wrote:
> Maybe:
> 
> |(){ class __anonclass1 : BaseClassList { void* this; } return new 
> __anonclass1 args; }() |
> 
> Could that work correctly with the context pointer?

Context pointer is irrelevant, it won't work.

```d
     bool b;
	auto v = b ? (
         new class LeClass, LeInterface {}
         ) : (
         new class LeClass, LeInterface {}
         );
```

```
	bool b = false;
	LeClass v = b ? LeClass, LeInterface
	{
		void* this;
		@system this()
		{
			super.this();
			return this;
		}
	}
	 , new __anonclass2 : (LeClass, LeInterface
	{
		void* this;
		@system this()
		{
			super.this();
			return this;
		}
	}
	 , new __anonclass3);
```

The joys of expressions being a tree.

> Otherwise to generally fix it, there would need to be a way of declaring 
> inline types in an expression. (We also might want inline template syntax).

The only type we need to declare inline is classes, as far as I'm aware, 
which I did add to the grammar (but may have forgotten the class name 
identifier *sigh*).



More information about the dip.ideas mailing list