mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
Move dmd files into compiler/
This commit is contained in:
parent
20bd0cacbd
commit
6374bb87b7
4579 changed files with 4 additions and 4 deletions
94
compiler/test/runnable/interface.d
Normal file
94
compiler/test/runnable/interface.d
Normal file
|
@ -0,0 +1,94 @@
|
|||
import core.stdc.stdio;
|
||||
|
||||
/*******************************************/
|
||||
|
||||
interface IStream
|
||||
{
|
||||
int read();
|
||||
}
|
||||
|
||||
interface OStream
|
||||
{
|
||||
int write();
|
||||
}
|
||||
|
||||
class IO : IStream, OStream
|
||||
{
|
||||
int read() { return 7; }
|
||||
int write() { return 267; }
|
||||
}
|
||||
|
||||
void foo(IStream i, OStream o)
|
||||
{
|
||||
printf("foo(i = %p, o = %p)\n", i, o);
|
||||
assert(i.read() == 7);
|
||||
assert(o.write() == 267);
|
||||
}
|
||||
|
||||
void test1()
|
||||
{
|
||||
IO io = new IO();
|
||||
printf("io = %p\n", io);
|
||||
foo(io, io);
|
||||
destroy(io);
|
||||
}
|
||||
|
||||
/*******************************************/
|
||||
|
||||
interface I { }
|
||||
class C : I
|
||||
{
|
||||
~this() { printf("~C()\n"); }
|
||||
}
|
||||
|
||||
void test2()
|
||||
{
|
||||
I i = new C();
|
||||
destroy(i);
|
||||
|
||||
{
|
||||
scope I j = new C();
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************/
|
||||
|
||||
interface I3 {
|
||||
void h();
|
||||
}
|
||||
interface K3 {
|
||||
void f();
|
||||
}
|
||||
|
||||
interface J3 : I3, K3 {}
|
||||
|
||||
class A3 : J3 {
|
||||
short x = 3;
|
||||
|
||||
void f(){ assert(x == 3); }
|
||||
void h(){ assert(x == 3); }
|
||||
}
|
||||
|
||||
void test3()
|
||||
{
|
||||
auto a = new A3();
|
||||
a.f();
|
||||
a.h();
|
||||
J3 j = a;
|
||||
j.f();
|
||||
K3 k = a;
|
||||
k.f();
|
||||
assert(&j.f == &k.f); // https://issues.dlang.org/show_bug.cgi?id=3706
|
||||
}
|
||||
|
||||
/*******************************************/
|
||||
|
||||
int main()
|
||||
{
|
||||
test1();
|
||||
test2();
|
||||
test3();
|
||||
|
||||
printf("Success\n");
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue