contract A {
    uint dummy;
    function f(uint[] calldata) external virtual pure {}
    function g(uint[] calldata) external virtual view { dummy; }
    function h(uint[] calldata) external virtual { dummy = 42; }
    function i(uint[] calldata) external virtual payable {}
}
contract B is A {
    function f(uint[] calldata) external override pure {}
    function g(uint[] calldata) external override view { dummy; }
    function h(uint[] calldata) external override { dummy = 42; }
    function i(uint[] calldata) external override payable {}
    function f(uint[] memory) public override pure {}
    function g(uint[] memory) public override view { dummy; }
    function h(uint[] memory) public override { dummy = 42; }
    function i(uint[] memory) public override payable {}
}
// ----
// DeclarationError 1686: (300-353): Function with same name and parameter types defined twice.
// DeclarationError 1686: (358-419): Function with same name and parameter types defined twice.
// DeclarationError 1686: (424-485): Function with same name and parameter types defined twice.
// DeclarationError 1686: (490-546): Function with same name and parameter types defined twice.
