[Issue 874] New: Incorrect codegen (?) with tuples, string constants, and AAs

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jan 22 20:12:32 PST 2007


http://d.puremagic.com/issues/show_bug.cgi?id=874

           Summary: Incorrect codegen (?) with tuples, string constants, and
                    AAs
           Product: D
           Version: 1.00
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Keywords: wrong-code
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: jarrett.billingsley at gmail.com


I don't know how else to describe this.

template AA(V, K)
{
        V[K] AA(T...)(T args)
        {
                V[K] ret;
                K key;

                foreach(i, arg; args)
                {
                        static if(!(i & 1))
                                key = arg;
                        else
                                ret[key] = arg;
                }

                return ret;
        }
}

void main()
{
        char[][char[]] array = AA!(char[], char[])("a", "b", "c", "d");

        writefln("length = ", array.length);

        foreach(k, v; array)
                writefln("array[", k, "] = ", v);
}

This code will give bizarre output when printing out the contents of the
returned AA.  This usually is weird characters, and usually results in a
"4invalid UTF-8 sequence" exception.  Stranger still, the output changes
depending on how many string literals there are in main().  This happens in
both -debug and -release modes, although they give different output.


-- 



More information about the Digitalmars-d-bugs mailing list