Skip to content

Commit 742415c

Browse files
authored
Include return param names in modified namespaced compilation (#1050)
1 parent 6a9aef6 commit 742415c

File tree

6 files changed

+50
-8
lines changed

6 files changed

+50
-8
lines changed

packages/core/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 1.34.4 (2024-07-22)
4+
5+
- Fix Hardhat compile error when return parameter names are documented as param. ([#1050](https://github.com/OpenZeppelin/openzeppelin-upgrades/pull/1050))
6+
37
## 1.34.3 (2024-07-19)
48

59
- Fix Hardhat compile error when multiple return parameters are documented. ([#1048](https://github.com/OpenZeppelin/openzeppelin-upgrades/pull/1048))

packages/core/contracts/test/NamespacedToModify.sol

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,13 @@ function hasMultipleReturns() pure returns (uint, uint) {
231231
function hasMultipleNamedReturns() pure returns (uint a, uint b) {
232232
}
233233

234+
/**
235+
* @param a first
236+
* @param b second
237+
*/
238+
function hasReturnsDocumentedAsParams() pure returns (uint a, uint b) {
239+
}
240+
234241
contract HasNatSpecWithMultipleReturns {
235242
/**
236243
* @return uint 1
@@ -245,4 +252,11 @@ contract HasNatSpecWithMultipleReturns {
245252
*/
246253
function hasMultipleNamedReturnsInContract() public pure returns (uint a, uint b) {
247254
}
255+
256+
/**
257+
* @param a first
258+
* @param b second
259+
*/
260+
function hasReturnsDocumentedAsParamsInContract() public pure returns (uint a, uint b) {
261+
}
248262
}

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openzeppelin/upgrades-core",
3-
"version": "1.34.3",
3+
"version": "1.34.4",
44
"description": "",
55
"repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
66
"license": "MIT",

packages/core/src/utils/make-namespaced.test.ts.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Generated by [AVA](https://avajs.dev).
5959
bytes32 private constant MAIN_STORAGE_LOCATION =␊
6060
0x183a6125c38840424c4a85fa12bab2ab606c4b6d0e7cc73c0c06ba5300eab500;␊
6161
62-
function _getMainStorage() private pure returns (bool) {}␊
62+
function _getMainStorage() private pure returns (bool $) {}␊
6363
6464
function _getXTimesY() internal view returns (bool) {}␊
6565
@@ -221,26 +221,38 @@ Generated by [AVA](https://avajs.dev).
221221
* @return uint 1␊
222222
* @return uint 2␊
223223
*/␊
224-
function hasMultipleReturns() pure returns (bool,bool) {}␊
224+
function hasMultipleReturns() pure returns (bool, bool) {}␊
225225
226226
/**␊
227227
* @return a first␊
228228
* @return b second␊
229229
*/␊
230-
function hasMultipleNamedReturns() pure returns (bool,bool) {}␊
230+
function hasMultipleNamedReturns() pure returns (bool a, bool b) {}␊
231+
232+
/**␊
233+
* @param a first␊
234+
* @param b second␊
235+
*/␊
236+
function hasReturnsDocumentedAsParams() pure returns (bool a, bool b) {}␊
231237
232238
contract HasNatSpecWithMultipleReturns {␊
233239
/**␊
234240
* @return uint 1␊
235241
* @return uint 2␊
236242
*/␊
237-
function hasMultipleReturnsInContract() public pure returns (bool,bool) {}␊
243+
function hasMultipleReturnsInContract() public pure returns (bool, bool) {}␊
238244
239245
/**␊
240246
* @return a first␊
241247
* @return b second␊
242248
*/␊
243-
function hasMultipleNamedReturnsInContract() public pure returns (bool,bool) {}␊
249+
function hasMultipleNamedReturnsInContract() public pure returns (bool a, bool b) {}␊
250+
251+
/**␊
252+
* @param a first␊
253+
* @param b second␊
254+
*/␊
255+
function hasReturnsDocumentedAsParamsInContract() public pure returns (bool a, bool b) {}␊
244256
}␊
245257
`,
246258
},
49 Bytes
Binary file not shown.

packages/core/src/utils/make-namespaced.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Node } from 'solidity-ast/node';
33
import { SolcInput, SolcOutput } from '../solc-api';
44
import { getStorageLocationAnnotation } from '../storage/namespace';
55
import { assert } from './assert';
6-
import { FunctionDefinition } from 'solidity-ast';
6+
import { FunctionDefinition, VariableDeclaration } from 'solidity-ast';
77

88
const OUTPUT_SELECTION = {
99
'*': {
@@ -176,7 +176,11 @@ function replaceFunction(node: FunctionDefinition, orig: Buffer, modifications:
176176

177177
if (node.returnParameters.parameters.length > 0) {
178178
modifications.push(
179-
makeReplace(node.returnParameters, orig, `(${node.returnParameters.parameters.map(() => 'bool').join(',')})`),
179+
makeReplace(
180+
node.returnParameters,
181+
orig,
182+
`(${node.returnParameters.parameters.map(param => toReturnParameterReplacement(param)).join(', ')})`,
183+
),
180184
);
181185
}
182186

@@ -186,6 +190,14 @@ function replaceFunction(node: FunctionDefinition, orig: Buffer, modifications:
186190
}
187191
}
188192

193+
function toReturnParameterReplacement(param: VariableDeclaration) {
194+
if (param.name.length > 0) {
195+
return `bool ${param.name}`;
196+
} else {
197+
return 'bool';
198+
}
199+
}
200+
189201
function getPositions(node: Node) {
190202
const [start, length] = node.src.split(':').map(Number);
191203
const end = start + length;

0 commit comments

Comments
 (0)