Mercurial > projects > ldc
view tests/mini/virtcall2.d @ 1603:eae495e6ae8d
Merge DMD r248: implement Denis Koroskin's macro suggestion
---
dmd/lexer.c | 2 +-
dmd/lexer.h | 8 ++++----
dmd/mars.c | 2 +-
dmd/parse.c | 12 ++++++------
4 files changed, 12 insertions(+), 12 deletions(-)
author | Leandro Lucarella <llucax@gmail.com> |
---|---|
date | Wed, 06 Jan 2010 15:18:19 -0300 |
parents | 7ffac0079d08 |
children |
line wrap: on
line source
enum { COMMON, INPUT, OUTPUT, CONDUIT, OTHER } interface Common { int common(); } interface Input : Common { int input(); } interface Output : Common { int output(); } interface Conduit : Input, Output { abstract int conduit(); } class Abstract : Conduit { abstract int conduit(); abstract int output(); abstract int input(); int common() { return COMMON; } } interface Other { int other(); } class Impl : Abstract, Other { int conduit() { return CONDUIT; } int output() { return OUTPUT; } int other() { return OTHER; } int input() { return INPUT; } } void main() { auto impl = new Impl; { auto i = impl; assert(i.common() == COMMON); assert(i.input() == INPUT); assert(i.output() == OUTPUT); assert(i.conduit() == CONDUIT); assert(i.other() == OTHER); } { Abstract i = impl; assert(i.common() == COMMON); assert(i.input() == INPUT); assert(i.output() == OUTPUT); assert(i.conduit() == CONDUIT); } { Conduit i = impl; assert(i.common() == COMMON); assert(i.input() == INPUT); assert(i.output() == OUTPUT); assert(i.conduit() == CONDUIT); } { Output i = impl; assert(i.output() == OUTPUT); } { Common i = impl; assert(i.common() == COMMON); } }