Extract tests.

This commit is contained in:
chriseth
2018-04-18 14:24:35 +02:00
parent f925747050
commit f510348ff1
26 changed files with 197 additions and 182 deletions
@@ -0,0 +1,6 @@
contract C {
constructor() internal {}
}
contract D is C {
constructor() public { }
}
@@ -0,0 +1,9 @@
contract C {
function C() internal {}
}
contract D is C {
function D() public {}
}
// ----
// Warning: (14-38): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (60-82): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
@@ -0,0 +1 @@
contract A { constructor() public {} }
@@ -0,0 +1,3 @@
contract A { function A() public {} }
// ----
// Warning: (13-35): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
@@ -0,0 +1,4 @@
pragma experimental "v0.5.0";
contract A { function A() public {} }
// ----
// SyntaxError: (43-65): Functions are not allowed to have the same name as the contract. If you intend this to be a constructor, use "constructor(...) { ... }" to define it.
@@ -0,0 +1,13 @@
contract test1 {
constructor() constant {}
}
contract test2 {
constructor() view {}
}
contract test3 {
constructor() pure {}
}
// ----
// TypeError: (19-44): Constructor must be payable or non-payable, but is "view".
// TypeError: (66-87): Constructor must be payable or non-payable, but is "view".
// TypeError: (109-130): Constructor must be payable or non-payable, but is "pure".
@@ -0,0 +1,16 @@
contract test1 {
function test1() constant {}
}
contract test2 {
function test2() view {}
}
contract test3 {
function test3() pure {}
}
// ----
// Warning: (21-49): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (73-97): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (121-145): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (21-49): Constructor must be payable or non-payable, but is "view".
// TypeError: (73-97): Constructor must be payable or non-payable, but is "view".
// TypeError: (121-145): Constructor must be payable or non-payable, but is "pure".
@@ -0,0 +1,12 @@
// The constructor of a base class should not be visible in the derived class
contract A { constructor(string) public { } }
contract B is A {
function f() pure public {
A x = A(0); // convert from address
string memory y = "ab";
A(y); // call as a function is invalid
x;
}
}
// ----
// TypeError: (243-247): Explicit type conversion not allowed from "string memory" to "contract A".
@@ -0,0 +1,13 @@
// The constructor of a base class should not be visible in the derived class
contract A { function A(string s) public { } }
contract B is A {
function f() pure public {
A x = A(0); // convert from address
string memory y = "ab";
A(y); // call as a function is invalid
x;
}
}
// ----
// Warning: (91-122): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (244-248): Explicit type conversion not allowed from "string memory" to "contract A".
@@ -0,0 +1,5 @@
contract C {
constructor();
}
// ----
// TypeError: (14-28): Constructor must be implemented if declared.
@@ -0,0 +1,6 @@
contract C {
function C();
}
// ----
// Warning: (14-27): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (14-27): Constructor must be implemented if declared.
@@ -0,0 +1,5 @@
contract test {
constructor() external {}
}
// ----
// TypeError: (17-42): Constructor must be public or internal.
@@ -0,0 +1,6 @@
contract test {
function test() external {}
}
// ----
// Warning: (17-44): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (17-44): Constructor must be public or internal.
@@ -0,0 +1,13 @@
// Previously, the type information for A was not yet available at the point of
// "new A".
contract B {
A a;
constructor() public {
a = new A(this);
}
}
contract A {
constructor(address a) internal {}
}
// ----
// TypeError: (141-146): Contract with internal constructor cannot be created directly.
@@ -0,0 +1,15 @@
// Previously, the type information for A was not yet available at the point of
// "new A".
contract B {
A a;
function B() public {
a = new A(this);
}
}
contract A {
function A(address a) internal {}
}
// ----
// Warning: (112-155): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (172-205): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (140-145): Contract with internal constructor cannot be created directly.
@@ -0,0 +1,8 @@
contract C {
constructor() internal {}
}
contract D {
function f() public { C c = new C(); c; }
}
// ----
// TypeError: (84-89): Contract with internal constructor cannot be created directly.
@@ -0,0 +1,9 @@
contract C {
function C() internal {}
}
contract D {
function f() public { C x = new C(); x; }
}
// ----
// Warning: (14-38): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (83-88): Contract with internal constructor cannot be created directly.
@@ -0,0 +1,7 @@
interface I {
constructor();
}
// ----
// Warning: (15-29): Functions in interfaces should be declared external.
// TypeError: (15-29): Constructor cannot be defined in interfaces.
// TypeError: (15-29): Constructor must be implemented if declared.
@@ -0,0 +1,8 @@
interface I {
function I();
}
// ----
// Warning: (15-28): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (15-28): Functions in interfaces should be declared external.
// TypeError: (15-28): Constructor cannot be defined in interfaces.
// TypeError: (15-28): Constructor must be implemented if declared.
@@ -0,0 +1,6 @@
library Lib {
constructor();
}
// ----
// TypeError: (15-29): Constructor cannot be defined in libraries.
// TypeError: (15-29): Constructor must be implemented if declared.
@@ -0,0 +1,7 @@
library Lib {
function Lib();
}
// ----
// Warning: (15-30): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (15-30): Constructor cannot be defined in libraries.
// TypeError: (15-30): Constructor must be implemented if declared.
@@ -0,0 +1,6 @@
// It is fine to "override" constructor of a base class since it is invisible
contract A { function A() public { } }
contract B is A { function A() public pure returns (uint8) {} }
// ----
// Warning: (91-114): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (135-178): This declaration shadows an existing declaration.
@@ -0,0 +1,5 @@
contract test {
constructor() public returns (uint a) { }
}
// ----
// TypeError: (46-54): Non-empty "returns" directive for constructor.
@@ -0,0 +1,6 @@
contract test {
function test() public returns (uint a) { }
}
// ----
// Warning: (17-60): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// TypeError: (48-56): Non-empty "returns" directive for constructor.
@@ -0,0 +1,8 @@
contract test {
function test(uint a) public { }
function test() public {}
}
// ----
// Warning: (17-49): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// Warning: (51-76): Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
// DeclarationError: (17-49): More than one constructor defined.