Add log for handling muliple returned values (#359)

Co-authored-by: Dhruv Srivastava <dhruvdhs.ds@gmail.com>
This commit is contained in:
2023-04-12 14:46:43 +05:30
committed by GitHub
co-authored by Dhruv Srivastava
parent 7dada71fa3
commit 25df38ace2
4 changed files with 34 additions and 25 deletions
+2
View File
@@ -62,6 +62,8 @@ Steps:
# NOTE: When passed an *URL* as contract path, it is assumed that it points to an already flattened contract file.
```
* Ensure dependencies are installed in the contracts repository before generating the watcher
* Run the following command to generate a watcher from contract(s):
```bash
@@ -61,6 +61,8 @@
"devDependencies": {
"@ethersproject/abi": "^5.3.0",
"@types/yargs": "^17.0.0",
"@types/debug": "^4.1.5",
"@types/json-bigint": "^1.0.1",
"@typescript-eslint/eslint-plugin": "^5.47.1",
"@typescript-eslint/parser": "^5.47.1",
"eslint": "^8.35.0",
+27 -22
View File
@@ -60,32 +60,37 @@ export class Visitor {
let errorMessage = '';
const typeName = node.returnParameters[0].typeName;
switch (typeName.type) {
case 'ElementaryTypeName': {
const returnType = typeName.name;
if (node.returnParameters.length > 1) {
errorMessage = `No support in codegen for multiple returned values from method ${node.name}`;
} else {
const typeName = node.returnParameters[0].typeName;
switch (typeName.type) {
case 'ElementaryTypeName': {
const returnType = typeName.name;
this._schema.addQuery(name, params, returnType);
this._resolvers.addQuery(name, params, returnType);
this._entity.addQuery(name, params, returnType);
this._database.addQuery(name, params, returnType);
this._client.addQuery(name, params, returnType);
this._schema.addQuery(name, params, returnType);
this._resolvers.addQuery(name, params, returnType);
this._entity.addQuery(name, params, returnType);
this._database.addQuery(name, params, returnType);
this._client.addQuery(name, params, returnType);
assert(this._contract);
this._indexer.addQuery(this._contract.name, MODE_ETH_CALL, name, params, returnType);
assert(this._contract);
this._indexer.addQuery(this._contract.name, MODE_ETH_CALL, name, params, returnType);
break;
break;
}
case 'UserDefinedTypeName':
errorMessage = `No support in codegen for user defined return type from method "${node.name}"`;
break;
case 'ArrayTypeName':
errorMessage = `No support in codegen for return type "${typeName.baseTypeName.name}[]" from method "${node.name}"`;
break;
default:
errorMessage = `No support in codegen for return type "${typeName.type}" from method "${node.name}"`;
}
case 'UserDefinedTypeName':
errorMessage = `No support in codegen for user defined return type from method "${node.name}"`;
break;
case 'ArrayTypeName':
errorMessage = `No support in codegen for return type "${typeName.baseTypeName.name}[]" from method "${node.name}"`;
break;
default:
errorMessage = `No support in codegen for return type "${typeName.type}" from method "${node.name}"`;
}
if (errorMessage !== '') {