Wrong lowering for a[b][c]++

H. S. Teoh hsteoh at quickfur.ath.cx
Thu Mar 22 11:21:43 PDT 2012


On Thu, Mar 22, 2012 at 07:04:09PM +0100, Andrej Mitrovic wrote:
> On 3/22/12, Andrej Mitrovic <andrej.mitrovich at gmail.com> wrote:
> > Your test files work ok.
> 
> Well unfortunately isAssociativeArray from std.traits fails on your
> hashes (reasonable, since it calls __traits internally and has no way
> of knowing about external hashes).
> 
> I also can't use your hashes with some helper functions that I use:
> 
> template ValueType(V : V[K], K) {
>     alias V ValueType;
> }
> 
> The function that needs the above is:
> 
> void addKey(AA, Key)(ref AA hash, Key key)
>   if (isAssociativeArray!AA && is(KeyType!AA == Key))
> {
>     hash[key] = (ValueType!AA).init;
> }
> 
> I can temporarily remove those constraints, but how do I extract the
> value type of your hash?

Hmm. Perhaps some aliases are in order?

	struct AssociativeArray(K,V) {
		...
		alias Key keytype;
		alias Value valuetype;
		...
	}

Presumably this won't be an issue once it's integrated with dmd. But
these aliases might be useful for other things, too.


T

-- 
"You know, maybe we don't *need* enemies." "Yeah, best friends are about all I can take." -- Calvin & Hobbes


More information about the Digitalmars-d mailing list