mirror of
https://github.com/cerc-io/watcher-ts
synced 2026-05-07 07:44:17 +00:00
Handle user defined types in visitor methods when continuing on error
This commit is contained in:
parent
b572eb9032
commit
c557cbe035
@ -69,16 +69,18 @@ export class Visitor {
|
||||
return { name: item.name, type: item.typeName.name };
|
||||
});
|
||||
|
||||
let errorMessage = '';
|
||||
|
||||
// Check for unhandled return type params
|
||||
node.returnParameters.forEach(returnParameter => {
|
||||
assert(returnParameter.typeName);
|
||||
|
||||
const isTypeHandled = ['ElementaryTypeName', 'ArrayTypeName'].includes(returnParameter.typeName.type);
|
||||
|
||||
if (!isTypeHandled) {
|
||||
const errorMessage = `No support in codegen for type ${returnParameter.typeName.type} from method "${node.name}"`;
|
||||
errorMessage = `No support in codegen for type ${returnParameter.typeName.type} from method "${node.name}"`;
|
||||
|
||||
if (this._continueOnError) {
|
||||
console.log(errorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -86,6 +88,11 @@ export class Visitor {
|
||||
}
|
||||
});
|
||||
|
||||
if (this._continueOnError && errorMessage !== '') {
|
||||
console.log(errorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
this._schema.addQuery(name, params, node.returnParameters);
|
||||
this._resolvers.addQuery(name, params);
|
||||
assert(this._contract);
|
||||
@ -125,12 +132,24 @@ export class Visitor {
|
||||
// If the variable type is mapping, extract key as a param:
|
||||
// Eg. mapping(address => mapping(address => uint256)) private _allowances;
|
||||
while (typeName.type === 'Mapping') {
|
||||
assert(typeName.keyType.type === 'ElementaryTypeName', 'UserDefinedTypeName map keys like enum type not handled');
|
||||
if (typeName.keyType.type === 'UserDefinedTypeName') {
|
||||
errorMessage = 'No support in codegen for user defined type map keys';
|
||||
break;
|
||||
}
|
||||
|
||||
params.push({ name: `key${numParams.toString()}`, type: typeName.keyType.name });
|
||||
typeName = typeName.valueType;
|
||||
numParams++;
|
||||
}
|
||||
|
||||
if (typeName.type === 'UserDefinedTypeName') {
|
||||
errorMessage = 'No support in codegen for user defined type map values';
|
||||
}
|
||||
|
||||
if (errorMessage !== '') {
|
||||
break;
|
||||
}
|
||||
|
||||
// falls through
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user