Duplicate interface methods with different signatures

POUs implementing multiple interfaces where both interfaces define a method with the same name are required to have the same signature for the method. A method signature is thereby defined by its name, return type and parameter list.

Errouneus code example:

INTERFACE interfaceA
    METHOD foo : INT
        VAR_INPUT
            a : INT;
        END_VAR
    END_METHOD
END_INTERFACE

INTERFACE interfaceB
    METHOD foo : DINT
        VAR_OUTPUT
            a : INT;
        END_VAR
    END_METHOD
END_INTERFACE

FUNCTION_BLOCK fb IMPLEMENTS interfaceA, interfaceB
    // Signatures for foo differs, do we implement foo as defined in interfaceA or interfaceB?
END_FUNCTION_BLOCK

In the example above, the method foo is defined in both interfaces interfaceA and interfaceB. However, the return type of foo in interfaceA is INT whereas in interfaceB it is DINT. Futhermore, the parameter a in interfaceA is an input parameter whereas in interfaceB it is an output parameter. As a result both you and the compiler are left in doubt as to which method signature to implement in the function block fb and as a result the compiler will raise this error.