diff --git a/packages/near-sdk-js/lib/cli/cli.js b/packages/near-sdk-js/lib/cli/cli.js index 7da0f3bb..0c6caea1 100755 --- a/packages/near-sdk-js/lib/cli/cli.js +++ b/packages/near-sdk-js/lib/cli/cli.js @@ -206,6 +206,10 @@ async function createMethodsHeaderFile(rollupTarget, verbose = false) { } const mod = await import(`${PROJECT_DIR}/${rollupTarget}`); const exportNames = Object.keys(mod); + if (exportNames.includes('panic')) { + signal.error("'panic' is a reserved word, please use another name for contract method"); + process.exit(1); + } const methods = exportNames.reduce((result, key) => `${result}DEFINE_NEAR_METHOD(${key})\n`, ""); fs.writeFileSync(`${buildPath}/methods.h`, methods); } diff --git a/packages/near-sdk-js/lib/cli/utils.js b/packages/near-sdk-js/lib/cli/utils.js index 51a014aa..95a718ca 100644 --- a/packages/near-sdk-js/lib/cli/utils.js +++ b/packages/near-sdk-js/lib/cli/utils.js @@ -19,6 +19,10 @@ export async function executeCommand(command, verbose = false) { } if (code != 0) { signale.error(`Command failed: ${command}`); + const failDueToNameConflict = stderr.match(/conflicting types for '([a-zA-Z0-9_]+)'/); + if (failDueToNameConflict.length > 1) { + signale.error(`'${failDueToNameConflict[1]}' is a reserved word, please use another name for contract method"`); + } } if (stderr && verbose) { signale.error(`Command stderr: ${stderr}`); diff --git a/packages/near-sdk-js/src/cli/cli.ts b/packages/near-sdk-js/src/cli/cli.ts index f583d3aa..52d4db0c 100644 --- a/packages/near-sdk-js/src/cli/cli.ts +++ b/packages/near-sdk-js/src/cli/cli.ts @@ -342,6 +342,12 @@ async function createMethodsHeaderFile(rollupTarget: string, verbose = false) { const mod = await import(`${PROJECT_DIR}/${rollupTarget}`); const exportNames = Object.keys(mod); + if (exportNames.includes('panic')) { + signal.error( + "'panic' is a reserved word, please use another name for contract method" + ); + process.exit(1); + } const methods = exportNames.reduce( (result, key) => `${result}DEFINE_NEAR_METHOD(${key})\n`, "" diff --git a/packages/near-sdk-js/src/cli/utils.ts b/packages/near-sdk-js/src/cli/utils.ts index 812e503b..2fd2a193 100644 --- a/packages/near-sdk-js/src/cli/utils.ts +++ b/packages/near-sdk-js/src/cli/utils.ts @@ -28,6 +28,11 @@ export async function executeCommand( } if (code != 0) { signale.error(`Command failed: ${command}`); + + const failDueToNameConflict = stderr.match(/conflicting types for '([a-zA-Z0-9_]+)'/); + if (failDueToNameConflict.length > 1) { + signale.error(`'${failDueToNameConflict[1]}' is a reserved word, please use another name for contract method"`); + } } if (stderr && verbose) { signale.error(`Command stderr: ${stderr}`);