view tests/mini/interface8.d @ 1134:152bd2c804d0

Update comments now that LLVM PR3861 has been fixed. However, since conditionally removing the workaround makes the ABI dependent on LLVM version, I reconsidered that. (The same revision of LDC compiling for the same target should probably produce code that follows the same ABI, right?)
author Frits van Bommel <fvbommel wxs.nl>
date Tue, 24 Mar 2009 02:46:57 +0100
parents d92acb81a583
children
line wrap: on
line source

interface InputStream
{
  void foo();
}

interface OutputStream
{
  void bar();
}

interface IConduit : InputStream, OutputStream
{
  abstract uint bufferSize();
}

class Conduit : IConduit
{
  abstract uint bufferSize();
  abstract void foo();
  abstract void bar();
}

interface Selectable
{
  void car();
}

class DeviceConduit : Conduit, Selectable
{
        override uint bufferSize ()
        {
                return 1024 * 16;
        }
  override void foo() {}
  override void bar() {}
  override void car() {}
  int handle;
}

class ConsoleConduit : DeviceConduit
{
  override void foo() {}
  bool redirected;
}

class OtherConduit : Conduit
{
  abstract uint bufferSize();
  override void foo() {}
  override void bar() {}
}

void main()
{
  auto c = new ConsoleConduit;
  IConduit ci = c;
  assert(c.bufferSize == ci.bufferSize);
}