I used the following code

interface test{
  function testfunction(uint[20] memory P, uint[20] memory Q) external returns(uint,bool,uint);

It gives the error Location has to be calldata for external functions (remove the "memory" or "storage" keyword)

and when I changes it to

interface test{
  function testfunction(uint[20] calldata P, uint[20] memory Q) calldata returns(uint,bool,uint);

It gives error Expected ',' but got identifier function , so what is the correct way declare this in interface, and also how to call that function from inside a function of same contract. please reply for the same solidity version.

  • The error-message tells you remove the "memory" or "storage" keyword. Why not just follow it??? – goodvibration Jan 3 at 13:40
  • "how to call that function from inside a function of same contract" - declare it public instead of external (and of course, in the contract itself, not in the interface). – goodvibration Jan 3 at 13:41
  • when I removed the keyword calldata it worked, Thank You – ashwin Jan 3 at 13:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.