mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
186 lines
2.6 KiB
D
186 lines
2.6 KiB
D
// COMPILED_IMPORTS: imports/testcontracts.d
|
|
|
|
import imports.testcontracts;
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=3602
|
|
|
|
class Derived3602 : Base3602
|
|
{
|
|
override void method(int x, int y)
|
|
in
|
|
{
|
|
assert(x > 0);
|
|
assert(y > 0);
|
|
}
|
|
do
|
|
{
|
|
}
|
|
}
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=5230
|
|
|
|
class Derived5230 : Base5230
|
|
{
|
|
override int method()
|
|
{
|
|
return 69;
|
|
}
|
|
}
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=17502
|
|
class Foo17502
|
|
{
|
|
auto foo()
|
|
out {}
|
|
do {}
|
|
|
|
auto bar()
|
|
out { assert (__result > 5); }
|
|
do { return 6; }
|
|
|
|
auto bar_2()
|
|
out (res) { assert (res > 5); }
|
|
do { return 6; }
|
|
|
|
int concrete()
|
|
out { assert(__result > 5); }
|
|
do { return 6; }
|
|
|
|
int concrete_2()
|
|
out(res) { assert (res > 5); }
|
|
do { return 6; }
|
|
|
|
void void_foo()
|
|
out {}
|
|
do {}
|
|
|
|
auto void_auto()
|
|
out {}
|
|
do {}
|
|
}
|
|
|
|
/***************************************************/
|
|
// Order of declaration: (A), (C : B), (B : A)
|
|
|
|
class A17502
|
|
{
|
|
int method(int p)
|
|
in
|
|
{
|
|
assert(p > 5);
|
|
}
|
|
out(res)
|
|
{
|
|
assert(res > 5);
|
|
}
|
|
do
|
|
{
|
|
return p;
|
|
}
|
|
}
|
|
|
|
class C17502 : B17502
|
|
{
|
|
override int method(int p)
|
|
in
|
|
{
|
|
assert(p > 3);
|
|
}
|
|
do
|
|
{
|
|
return p * 2;
|
|
}
|
|
}
|
|
|
|
class B17502 : A17502
|
|
{
|
|
override int method(int p)
|
|
in
|
|
{
|
|
assert(p > 2);
|
|
}
|
|
do
|
|
{
|
|
return p * 3;
|
|
}
|
|
}
|
|
|
|
/***************************************************/
|
|
// Order of declaration: (X : Y), (Y : Z), (Z)
|
|
|
|
class X17502 : Y17502
|
|
{
|
|
override int method(int p)
|
|
in
|
|
{
|
|
assert(p > 3);
|
|
}
|
|
do
|
|
{
|
|
return p * 2;
|
|
}
|
|
}
|
|
|
|
class Y17502 : Z17502
|
|
{
|
|
override int method(int p)
|
|
in
|
|
{
|
|
assert(p > 2);
|
|
}
|
|
do
|
|
{
|
|
return p * 3;
|
|
}
|
|
}
|
|
|
|
class Z17502
|
|
{
|
|
int method(int p)
|
|
in
|
|
{
|
|
assert(p > 5);
|
|
}
|
|
out(res)
|
|
{
|
|
assert(res > 5);
|
|
}
|
|
do
|
|
{
|
|
return p;
|
|
}
|
|
}
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=17893
|
|
|
|
final class Foo17893(T)
|
|
{
|
|
extern(C) void maythrow();
|
|
|
|
void bar()
|
|
in
|
|
{
|
|
maythrow();
|
|
}
|
|
do
|
|
{
|
|
}
|
|
}
|
|
|
|
Foo17893!int foo17893;
|
|
|
|
/***************************************************/
|
|
// https://issues.dlang.org/show_bug.cgi?id=15984
|
|
|
|
alias Bar15984 = extern (C) void function(void*);
|
|
|
|
final class C15984
|
|
{
|
|
void foo(Bar15984 bar)
|
|
in { assert(bar); }
|
|
do {}
|
|
}
|