changeset 931:47ef91337f5f

<smjg@iname.com> 2006-03-22 news:bug-65-3@http.d.puremagic.com/bugzilla/
author thomask
date Fri, 24 Mar 2006 14:25:30 +0000
parents c7e141bc2fba
children 763b5d8028af
files run/i/interface_23_A.d run/i/interface_23_B.d run/i/interface_23_C.d run/i/interface_23_D.d
diffstat 4 files changed, 252 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/i/interface_23_A.d	Fri Mar 24 14:25:30 2006 +0000
@@ -0,0 +1,62 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<smjg@iname.com>
+// @date@	2006-03-22
+// @uri@	news:bug-65-3@http.d.puremagic.com/bugzilla/
+
+module dstress.run.i.interface_23_A;
+
+int status;
+
+interface I {
+}
+
+class Parent {
+	I test() {
+		status += 7;
+		return new Child(42);
+	}
+}
+
+class Child : Parent, I {
+	int data;
+
+	this(int d) {
+		data = d;
+	}
+
+	override Child test() {
+		status += 1;
+		return new Child(69);
+	}
+}
+
+int main() {
+	Child a = new Child(105);
+	assert(a);
+	assert(status == 0);
+	assert(a.data == 105);
+
+	Parent p = a;
+	assert(p);
+	assert(status == 0);
+
+	Child c = a.test();
+	assert(c);
+	assert(status == 1);
+	assert(c.data == 69);
+
+	I i = p.test();
+	assert(i);
+	assert(status == 2);
+
+	Child d = cast(Child) i;
+	assert(d);
+	assert(status == 2);
+	assert(d.data == 69);
+
+	return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/i/interface_23_B.d	Fri Mar 24 14:25:30 2006 +0000
@@ -0,0 +1,62 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<smjg@iname.com>
+// @date@	2006-03-22
+// @uri@	news:bug-65-3@http.d.puremagic.com/bugzilla/
+
+module dstress.run.i.interface_23_B;
+
+int status;
+
+interface I {
+}
+
+class Parent {
+	I test() {
+		status += 7;
+		return new Child(42);
+	}
+}
+
+class Child : Parent, I {
+	int data;
+
+	this(int d) {
+		data = d;
+	}
+
+	Child test() {
+		status += 1;
+		return new Child(69);
+	}
+}
+
+int main() {
+	Child a = new Child(105);
+	assert(a);
+	assert(status == 0);
+	assert(a.data == 105);
+
+	Parent p = a;
+	assert(p);
+	assert(status == 0);
+
+	Child c = a.test();
+	assert(c);
+	assert(status == 1);
+	assert(c.data == 69);
+
+	I i = p.test();
+	assert(i);
+	assert(status == 2);
+
+	Child d = cast(Child) i;
+	assert(d);
+	assert(status == 2);
+	assert(d.data == 69);
+
+	return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/i/interface_23_C.d	Fri Mar 24 14:25:30 2006 +0000
@@ -0,0 +1,64 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<smjg@iname.com>
+// @date@	2006-03-22
+// @uri@	news:bug-65-3@http.d.puremagic.com/bugzilla/
+
+module dstress.run.i.interface_23_C;
+
+int status;
+
+interface I {
+	int showData();
+}
+
+class Parent {
+	I test() {
+		status += 7;
+		return new Child(42);
+	}
+}
+
+class Child : Parent, I {
+	int data;
+
+	this(int d) {
+		data = d;
+	}
+
+	Child test() {
+		status += 1;
+		return new Child(69);
+	}
+
+	int showData(){
+		return data;
+	}
+}
+
+int main() {
+	Child a = new Child(105);
+	assert(a);
+	assert(status == 0);
+	assert(a.data == 105);
+
+	Parent p = a;
+	assert(a);
+	assert(status == 0);
+
+	a.test();
+	assert(status == 1);
+
+	I i = p.test();
+	assert(i);
+	assert(status == 2);
+
+	assert(a.data == 105);
+	assert(a.showData() == 105);
+	assert(i.showData() == 69);
+
+	return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/i/interface_23_D.d	Fri Mar 24 14:25:30 2006 +0000
@@ -0,0 +1,64 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<smjg@iname.com>
+// @date@	2006-03-22
+// @uri@	news:bug-65-3@http.d.puremagic.com/bugzilla/
+
+module dstress.run.i.interface_23_D;
+
+int status;
+
+interface I {
+	int showData();
+}
+
+class Parent {
+	I test() {
+		status += 7;
+		return new Child(42);
+	}
+}
+
+class Child : Parent, I {
+	int data;
+
+	this(int d) {
+		data = d;
+	}
+
+	override Child test() {
+		status += 1;
+		return new Child(69);
+	}
+
+	override int showData(){
+		return data;
+	}
+}
+
+int main() {
+	Child a = new Child(105);
+	assert(a);
+	assert(status == 0);
+	assert(a.data == 105);
+
+	Parent p = a;
+	assert(a);
+	assert(status == 0);
+
+	a.test();
+	assert(status == 1);
+
+	I i = p.test();
+	assert(i);
+	assert(status == 2);
+
+	assert(a.data == 105);
+	assert(a.showData() == 105);
+	assert(i.showData() == 69);
+
+	return 0;
+}
+