pike.git
/
src
/
testsuite.in
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/testsuite.in:12122:
class A { class B { mixed f() { return typeof (A::this_program) != typeof (B::this_program); } } } int a() {return A()->B()->f();} ]])
+
// Names of inherits
test_program_eq([[
-
+
// 1: Direct inherit in the current class.
+
class A { local constant foo = 1; };
+
inherit A;
+
class B { inherit A; local constant foo = 2; };
+
class C { inherit B:A; local constant foo = 4;
+
int get_foo() {
+
return A::foo;
+
}
+
};
+
int a() { return C()->get_foo(); }
+
]],[[2]])
+
test_program_eq([[
+
// 2: The name of the current class.
+
class A { local constant foo = 1; };
+
inherit A:C;
+
class B { inherit A:C; local constant foo = 2; };
+
class C { inherit B; local constant foo = 4;
+
int get_foo() {
+
return C::foo;
+
}
+
};
+
int a() { return C()->get_foo(); }
+
]],[[4]])
+
test_program_eq([[
+
// 3.1: Direct inherit in a surrounding parent class.
+
class A { local constant foo = 1; };
+
class B { inherit A; local constant foo = 2; };
+
inherit B:A;
+
class C { inherit B; local constant foo = 4;
+
int get_foo() {
+
return A::foo;
+
}
+
};
+
int a() { return C()->get_foo(); }
+
]],[[2]])
+
test_program_eq([[
+
// 3.2: The name of a surrounding parent class.
+
class D {
+
class A { local constant foo = 1; };
+
inherit A;
+
class B { inherit A; local constant foo = 2; };
+
class C { inherit B; local constant foo = 4;
+
int get_foo() {
+
return D::foo;
+
}
+
};
+
int get_foo() {
+
return C()->get_foo();
+
}
+
};
+
int a() { return D()->get_foo(); }
+
]],[[1]])
+
test_program_eq([[
+
// 4: Indirect inherit in the current class.
+
class A { local constant foo = 1; };
+
class B { inherit A; local constant foo = 2; };
+
class C { inherit B; local constant foo = 4;
+
int get_foo() {
+
return A::foo;
+
}
+
};
+
int a() { return C()->get_foo(); }
+
]],[[1]])
+
test_program_eq([[
+
// 5: Indirect inherit in a surrounding parent class.
+
class A { local constant foo = 1; };
+
class B { inherit A; local constant foo = 2; };
+
class C { inherit B; local constant foo = 4;
+
class D {
+
local constant foo = 8;
+
int get_foo() {
+
return A::foo;
+
}
+
}
+
int get_foo() { return D()->get_foo(); }
+
};
+
int a() { return C()->get_foo(); }
+
]],[[1]])
+
+
test_program_eq([[
object ao = compile_string(#" string id() {return \"A\";} class B { string id() {return \"B\";} string foo() { return this->id() + id() + local::id() + global::this->id() + global::id(); } }")();