Mercurial > projects > ldc
view tests/mini/virtcall2.d @ 1610:4f63d530861f
Merge DMD r276: bugzilla 2229 ICE(template.c) instantiating an invalid...
bugzilla 2229 ICE(template.c) instantiating an invalid variadic template
with more than one argument.
---
dmd/template.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
author | Leandro Lucarella <llucax@gmail.com> |
---|---|
date | Wed, 06 Jan 2010 15:18:21 -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); } }