module arraytest_phobos;

import std.stdio;

interface ITest
{
	void doSomething();
}

class Test : ITest
{
	void doSomething()
	{
		writefln("Hi there!");
	}
}

void main()
{
	Test obj = new Test();
	obj.doSomething();                         // works
	
	Test[] objarr = [obj];
	objarr[0].doSomething();                   // works
	
	ITest intf = obj;
	intf.doSomething();                        // works

	ITest[] intfarr = [intf];
	intfarr[0].doSomething();                  // works
	writefln(intfarr[0].classinfo.name);       // works

	writefln("---");
	ITest[] intfarr2 = cast(ITest[])objarr;
	intfarr2[0].doSomething();                 // prints out "arraytest_phobos.Test" - WTF
	//writefln(intfarr2[0].classinfo.name);      // when uncommented, prints out garbage and crashes with "Error: 4invalid UTF-8 sequence"

	writefln("Done!");
}
