diff --git a/libsolidity/analysis/OverrideChecker.cpp b/libsolidity/analysis/OverrideChecker.cpp index 3b6f210f0..addb5dd9b 100644 --- a/libsolidity/analysis/OverrideChecker.cpp +++ b/libsolidity/analysis/OverrideChecker.cpp @@ -26,6 +26,7 @@ #include #include #include + #include #include @@ -490,7 +491,7 @@ void OverrideChecker::checkOverride(OverrideProxy const& _overriding, OverridePr ); if (!_overriding.overrides()) - overrideError(_overriding, _super, "Overriding " + _overriding.astNodeName() + " is missing 'override' specifier."); + overrideError(_overriding, _super, "Overriding " + _overriding.astNodeName() + " is missing \"override\" specifier."); if (_super.isVariable()) overrideError( @@ -571,7 +572,7 @@ void OverrideChecker::overrideListError( for (Declaration const* c: _secondary) { ssl.append("This contract: ", c->location()); - names.insert(c->name()); + names.insert("\"" + c->name() + "\""); } string contractSingularPlural = "contract "; if (_secondary.size() > 1) diff --git a/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override.sol b/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override.sol index aaa6a2cb0..c025e6b58 100644 --- a/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override.sol +++ b/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override.sol @@ -5,4 +5,4 @@ contract D is C { fallback() external {} } // ---- -// TypeError: (66-88): Overriding function is missing 'override' specifier. +// TypeError: (66-88): Overriding function is missing "override" specifier. diff --git a/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override_intermediate.sol b/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override_intermediate.sol index 079098c08..42b219113 100644 --- a/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override_intermediate.sol +++ b/test/libsolidity/syntaxTests/inheritance/fallback_receive/fallback_without_override_intermediate.sol @@ -7,4 +7,4 @@ contract E is D { fallback() external {} } // ---- -// TypeError: (86-108): Overriding function is missing 'override' specifier. +// TypeError: (86-108): Overriding function is missing "override" specifier. diff --git a/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override.sol b/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override.sol index 1195a7ba1..86edcf2f0 100644 --- a/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override.sol +++ b/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override.sol @@ -5,4 +5,4 @@ contract D is C { receive() external payable {} } // ---- -// TypeError: (73-102): Overriding function is missing 'override' specifier. +// TypeError: (73-102): Overriding function is missing "override" specifier. diff --git a/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override_intermediate.sol b/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override_intermediate.sol index 29dcf30b4..6414e44cf 100644 --- a/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override_intermediate.sol +++ b/test/libsolidity/syntaxTests/inheritance/fallback_receive/receive_without_override_intermediate.sol @@ -7,4 +7,4 @@ contract E is D { receive() external payable {} } // ---- -// TypeError: (93-122): Overriding function is missing 'override' specifier. +// TypeError: (93-122): Overriding function is missing "override" specifier. diff --git a/test/libsolidity/syntaxTests/inheritance/override/add_view.sol b/test/libsolidity/syntaxTests/inheritance/override/add_view.sol index d76637423..551ab86cc 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/add_view.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/add_view.sol @@ -1,5 +1,5 @@ contract B { function f() virtual public {} } contract C is B { function f() public view {} } // ---- -// TypeError: (64-91): Overriding function is missing 'override' specifier. +// TypeError: (64-91): Overriding function is missing "override" specifier. // TypeError: (64-91): Overriding function changes state mutability from "nonpayable" to "view". diff --git a/test/libsolidity/syntaxTests/inheritance/override/change_return_types_in_interface.sol b/test/libsolidity/syntaxTests/inheritance/override/change_return_types_in_interface.sol index 1a3f89d6d..308f4eb0f 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/change_return_types_in_interface.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/change_return_types_in_interface.sol @@ -7,5 +7,5 @@ contract B is I { function f() public pure returns (uint, uint) {} } // ---- -// TypeError: (182-230): Overriding function is missing 'override' specifier. +// TypeError: (182-230): Overriding function is missing "override" specifier. // TypeError: (182-230): Overriding function return types differ. diff --git a/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_empty_intermediate_public_state_variable_and_function.sol b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_empty_intermediate_public_state_variable_and_function.sol new file mode 100644 index 000000000..76660c679 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_empty_intermediate_public_state_variable_and_function.sol @@ -0,0 +1,13 @@ +interface I { +} +contract A is I +{ + uint public f; +} +abstract contract B is I +{ + function f() external virtual returns (uint); +} +abstract contract C is A, B {} +// ---- +// TypeError: (128-158): Derived contract must override function "f". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions. diff --git a/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable.sol b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable.sol new file mode 100644 index 000000000..9e8855e1f --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable.sol @@ -0,0 +1,12 @@ +interface I { + function f() external returns (uint); +} +abstract contract A is I +{ + uint public override f; +} +abstract contract B is I +{ +} +// This is fine because `f` is not implemented in `I` and `A.f` is the only mention below `I`. +abstract contract C is A, B {} diff --git a/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable_and_function.sol b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable_and_function.sol new file mode 100644 index 000000000..61289af0e --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable_and_function.sol @@ -0,0 +1,14 @@ +interface I { + function f() external returns (uint); +} +contract A is I +{ + uint public override f; +} +abstract contract B is I +{ + function f() external virtual override returns (uint); +} +abstract contract C is A, B {} +// ---- +// TypeError: (185-215): Derived contract must override function "f". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions. diff --git a/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable_and_function_implemented.sol b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable_and_function_implemented.sol new file mode 100644 index 000000000..71a647acc --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/diamond_interface_intermediate_public_state_variable_and_function_implemented.sol @@ -0,0 +1,14 @@ +interface I { + function f() external returns (uint); +} +contract A is I +{ + uint public override f; +} +abstract contract B is I +{ + function f() external virtual override returns (uint) { return 2; } +} +abstract contract C is A, B {} +// ---- +// TypeError: (198-228): Derived contract must override function "f". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions. diff --git a/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_empty_bottom_public_state_variable.sol b/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_empty_bottom_public_state_variable.sol new file mode 100644 index 000000000..3af8fd6e1 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_empty_bottom_public_state_variable.sol @@ -0,0 +1,13 @@ +contract I { + function f() external pure virtual returns (uint) { return 1; } +} +contract A is I +{ +} +contract B is I +{ +} +contract C is A, B +{ + uint public override f; +} diff --git a/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_implemented_public_state_variable.sol b/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_implemented_public_state_variable.sol new file mode 100644 index 000000000..5cad35d27 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_implemented_public_state_variable.sol @@ -0,0 +1,14 @@ +contract I { + function f() external pure virtual returns (uint) { return 1; } +} +contract A is I +{ + uint public override f; +} +contract B is I +{ + function f() external pure virtual override returns (uint) { return 2; } +} +contract C is A, B {} +// ---- +// TypeError: (219-240): Derived contract must override function "f". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions. diff --git a/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_public_state_variable.sol b/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_public_state_variable.sol new file mode 100644 index 000000000..94ef8be63 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/diamond_top_implemented_intermediate_public_state_variable.sol @@ -0,0 +1,13 @@ +contract I { + function f() external pure virtual returns (uint) { return 1; } +} +contract A is I +{ + uint public override f; +} +contract B is I +{ +} +contract C is A, B {} +// ---- +// TypeError: (145-166): Derived contract must override function "f". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions. diff --git a/test/libsolidity/syntaxTests/inheritance/override/override_missing_virtual.sol b/test/libsolidity/syntaxTests/inheritance/override/override_missing_virtual.sol index bf4b15d46..774d023f8 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/override_missing_virtual.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/override_missing_virtual.sol @@ -7,5 +7,5 @@ abstract contract X is A { function test2() external override(A) returns (uint256) {} } // ---- -// TypeError: (153-198): Overriding function is missing 'override' specifier. +// TypeError: (153-198): Overriding function is missing "override" specifier. // TypeError: (76-122): Trying to override non-virtual function. Did you forget to add "virtual"? diff --git a/test/libsolidity/syntaxTests/inheritance/override/override_multiple_missing.sol b/test/libsolidity/syntaxTests/inheritance/override/override_multiple_missing.sol index a10b23cdd..ec20bd729 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/override_multiple_missing.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/override_multiple_missing.sol @@ -18,5 +18,5 @@ abstract contract X is A, B, C, D { function foo() internal override(A, C) virtual returns (uint256); } // ---- -// TypeError: (533-550): Invalid contract specified in override list: C. -// TypeError: (603-617): Function needs to specify overridden contracts B and D. +// TypeError: (533-550): Invalid contract specified in override list: "C". +// TypeError: (603-617): Function needs to specify overridden contracts "B" and "D". diff --git a/test/libsolidity/syntaxTests/inheritance/override/override_public_vars.sol b/test/libsolidity/syntaxTests/inheritance/override/override_public_vars.sol index dd9c0a198..440ce769f 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/override_public_vars.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/override_public_vars.sol @@ -6,4 +6,4 @@ abstract contract X is A { } // ---- // DeclarationError: (73-100): Identifier already declared. -// TypeError: (84-92): Public state variable has override specified but does not override anything. +// TypeError: (23-41): Cannot override public state variable. diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_implements_parallel_interface.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_implements_parallel_interface.sol new file mode 100644 index 000000000..56346ada3 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_implements_parallel_interface.sol @@ -0,0 +1,21 @@ +interface A { + function foo() external returns (uint); + function goo() external returns (uint); +} +interface B { + function foo() external returns (uint); + function goo() external returns (uint); +} +contract X is A, B { + uint public override(A, B) foo; + function goo() external virtual override(A, B) returns (uint) {} +} +abstract contract T is A { + function foo() external virtual override returns (uint); + function goo() external virtual override returns (uint); +} +contract Y is X, T { +} +// ---- +// TypeError: (484-506): Derived contract must override function "foo". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions. +// TypeError: (484-506): Derived contract must override function "goo". Two or more base classes define function with same name and parameter types. diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_missing_override.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_missing_override.sol new file mode 100644 index 000000000..72ace500b --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_missing_override.sol @@ -0,0 +1,11 @@ +interface A { + function foo() external returns (uint); +} +interface B { + function foo() external returns (uint); +} +contract X is A, B { + uint public override(A) foo; +} +// ---- +// TypeError: (154-165): Public state variable needs to specify overridden contract "B". diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_no_override_but_function.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_no_override_but_function.sol index 50ca35914..6cbe0eb14 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/public_var_no_override_but_function.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_no_override_but_function.sol @@ -5,4 +5,5 @@ contract X is A { uint public foo; } // ---- +// TypeError: (100-115): Overriding public state variable is missing "override" specifier. // TypeError: (100-115): Public state variables can only override functions with external visibility. diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_overrides_public_var.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_overrides_public_var.sol new file mode 100644 index 000000000..e8033941f --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_overrides_public_var.sol @@ -0,0 +1,9 @@ +contract A { + uint public foo; +} +contract X is A { + uint public override foo; +} +// ---- +// DeclarationError: (55-79): Identifier already declared. +// TypeError: (17-32): Cannot override public state variable. diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_overriding_multiple.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_overriding_multiple.sol new file mode 100644 index 000000000..b5414aff5 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_overriding_multiple.sol @@ -0,0 +1,10 @@ +interface A { + function foo() external returns (uint); +} +interface B { + function foo() external returns (uint); +} +contract X is A, B { + uint public override(A, B) foo; +} +// ---- diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_overriding_multiple_derived.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_overriding_multiple_derived.sol new file mode 100644 index 000000000..385a6ee71 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_overriding_multiple_derived.sol @@ -0,0 +1,12 @@ +interface A { + function foo() external returns (uint); +} +interface B { + function foo() external returns (uint); +} +contract X is A, B { + uint public override(A, B) foo; +} +contract Y is X { +} +// ---- diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_parallel_funciton.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_parallel_funciton.sol new file mode 100644 index 000000000..6fee1cf61 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_parallel_funciton.sol @@ -0,0 +1,10 @@ +interface A { + function foo() external returns (uint); +} +contract B { + uint public foo; +} +contract X is A, B { +} +// ---- +// TypeError: (96-118): Derived contract must override function "foo". Two or more base classes define function with same name and parameter types. Since one of the bases defines a public state variable which cannot be overridden, you have to change the inheritance layout or the names of the functions. diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_var_surplus_override.sol b/test/libsolidity/syntaxTests/inheritance/override/public_var_surplus_override.sol new file mode 100644 index 000000000..a71aefaaf --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_var_surplus_override.sol @@ -0,0 +1,9 @@ +interface A { + function foo() external returns (uint); +} +interface B {} +contract X is A { + uint public override(A, B) foo; +} +// ---- +// TypeError: (106-120): Invalid contract specified in override list: "B". diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple.sol b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple.sol index 1d8e9a084..6e5d174ed 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple.sol @@ -8,4 +8,4 @@ contract X is A, B { uint public override foo; } // ---- -// TypeError: (162-211): Derived contract must override function "foo". Two or more base classes define function with same name and parameter types. +// TypeError: (196-204): Public state variable needs to specify overridden contracts "A" and "B". diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple1.sol b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple1.sol index bc07d6ade..9fe1fa82e 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple1.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple1.sol @@ -9,3 +9,5 @@ contract X is A, B { } // ---- // DeclarationError: (136-160): Identifier already declared. +// TypeError: (14-29): Cannot override public state variable. +// TypeError: (148-156): Public state variable needs to specify overridden contracts "A" and "B". diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond.sol b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond.sol index 66526c90b..d6a7fea26 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond.sol @@ -11,4 +11,4 @@ contract X is B, C { uint public override foo; } // ---- -// TypeError: (271-320): Derived contract must override function "foo". Two or more base classes define function with same name and parameter types. +// TypeError: (305-313): Public state variable needs to specify overridden contracts "B" and "C". diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond1.sol b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond1.sol index 1a4f74e5b..36c996380 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond1.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond1.sol @@ -12,4 +12,5 @@ contract X is B, C { } // ---- // DeclarationError: (245-269): Identifier already declared. -// TypeError: (223-272): Derived contract must override function "foo". Two or more base classes define function with same name and parameter types. +// TypeError: (100-124): Cannot override public state variable. +// TypeError: (257-265): Public state variable needs to specify overridden contracts "B" and "C". diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond2.sol b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond2.sol new file mode 100644 index 000000000..99ef13944 --- /dev/null +++ b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_diamond2.sol @@ -0,0 +1,17 @@ +contract A { + function foo() external virtual pure returns(uint) { return 5; } +} +contract B is A { + uint public override foo; +} +contract C is A { + function foo() external virtual override pure returns(uint) { return 5; } +} +contract X is B, C { + uint public override(A, C) foo; +} +// ---- +// DeclarationError: (245-275): Identifier already declared. +// TypeError: (100-124): Cannot override public state variable. +// TypeError: (257-271): Public state variable needs to specify overridden contract "B". +// TypeError: (257-271): Invalid contract specified in override list: "A". diff --git a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_explicit_override.sol b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_explicit_override.sol index f07b77556..caf3f9ea8 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_explicit_override.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/public_vars_multiple_explicit_override.sol @@ -8,4 +8,3 @@ contract X is A, B { uint public override(A, B) foo; } // ---- -// TypeError: (162-217): Derived contract must override function "foo". Two or more base classes define function with same name and parameter types. diff --git a/test/libsolidity/syntaxTests/inheritance/override/remove_view.sol b/test/libsolidity/syntaxTests/inheritance/override/remove_view.sol index 27ed7032a..1b5cc1679 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/remove_view.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/remove_view.sol @@ -1,5 +1,5 @@ contract B { function f() virtual public view {} } contract C is B { function f() public {} } // ---- -// TypeError: (69-91): Overriding function is missing 'override' specifier. +// TypeError: (69-91): Overriding function is missing "override" specifier. // TypeError: (69-91): Overriding function changes state mutability from "view" to "nonpayable". diff --git a/test/libsolidity/syntaxTests/inheritance/override/state_variable_function.sol b/test/libsolidity/syntaxTests/inheritance/override/state_variable_function.sol index bb4b28be8..9739acd67 100644 --- a/test/libsolidity/syntaxTests/inheritance/override/state_variable_function.sol +++ b/test/libsolidity/syntaxTests/inheritance/override/state_variable_function.sol @@ -6,3 +6,5 @@ contract C is A { } // ---- // DeclarationError: (50-87): Identifier already declared. +// TypeError: (50-87): Overriding function is missing "override" specifier. +// TypeError: (14-27): Cannot override public state variable. diff --git a/test/libsolidity/syntaxTests/modifiers/function_overrides_modifier.sol b/test/libsolidity/syntaxTests/modifiers/function_overrides_modifier.sol index a64c2790d..922e25051 100644 --- a/test/libsolidity/syntaxTests/modifiers/function_overrides_modifier.sol +++ b/test/libsolidity/syntaxTests/modifiers/function_overrides_modifier.sol @@ -2,4 +2,4 @@ contract A { function mod(uint a) public { } } contract B is A { modifier mod(uint a) { _; } } // ---- // DeclarationError: (65-92): Identifier already declared. -// TypeError: (65-92): Override changes function to modifier. +// TypeError: (65-92): Override changes function or public state variable to modifier. diff --git a/test/libsolidity/syntaxTests/modifiers/illegal_modifier_override.sol b/test/libsolidity/syntaxTests/modifiers/illegal_modifier_override.sol index 0b2087e7e..9abe7e075 100644 --- a/test/libsolidity/syntaxTests/modifiers/illegal_modifier_override.sol +++ b/test/libsolidity/syntaxTests/modifiers/illegal_modifier_override.sol @@ -2,5 +2,5 @@ contract A { modifier mod(uint a) { _; } } contract B is A { modifier mod(uint8 a) { _; } } // ---- // TypeError: (61-89): Override changes modifier signature. -// TypeError: (61-89): Overriding modifier is missing 'override' specifier. +// TypeError: (61-89): Overriding modifier is missing "override" specifier. // TypeError: (13-40): Trying to override non-virtual modifier. Did you forget to add "virtual"? diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/059_illegal_override_visibility.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/059_illegal_override_visibility.sol index 283d196ee..d1e110149 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/059_illegal_override_visibility.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/059_illegal_override_visibility.sol @@ -1,5 +1,5 @@ contract B { function f() virtual internal {} } contract C is B { function f() public {} } // ---- -// TypeError: (66-88): Overriding function is missing 'override' specifier. +// TypeError: (66-88): Overriding function is missing "override" specifier. // TypeError: (66-88): Overriding function visibility differs. diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/358_illegal_override_payable.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/358_illegal_override_payable.sol index 8b1b6a5da..28aa94ad2 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/358_illegal_override_payable.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/358_illegal_override_payable.sol @@ -1,5 +1,5 @@ contract B { function f() payable virtual public {} } contract C is B { function f() public {} } // ---- -// TypeError: (72-94): Overriding function is missing 'override' specifier. +// TypeError: (72-94): Overriding function is missing "override" specifier. // TypeError: (72-94): Overriding function changes state mutability from "payable" to "nonpayable". diff --git a/test/libsolidity/syntaxTests/nameAndTypeResolution/359_illegal_override_payable_nonpayable.sol b/test/libsolidity/syntaxTests/nameAndTypeResolution/359_illegal_override_payable_nonpayable.sol index 4a505db62..829efbcde 100644 --- a/test/libsolidity/syntaxTests/nameAndTypeResolution/359_illegal_override_payable_nonpayable.sol +++ b/test/libsolidity/syntaxTests/nameAndTypeResolution/359_illegal_override_payable_nonpayable.sol @@ -1,5 +1,5 @@ contract B { function f() virtual public {} } contract C is B { function f() payable public {} } // ---- -// TypeError: (64-94): Overriding function is missing 'override' specifier. +// TypeError: (64-94): Overriding function is missing "override" specifier. // TypeError: (64-94): Overriding function changes state mutability from "nonpayable" to "payable".