@openzeppelin/upgrades-core 1.38.0 → 1.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/storage-namespaced-outside-contract.test.js +14 -4
  7. package/dist/storage-namespaced-outside-contract.test.js.map +1 -1
  8. package/dist/storage-namespaced.test.js +24 -0
  9. package/dist/storage-namespaced.test.js.map +1 -1
  10. package/dist/utils/make-namespaced.d.ts +5 -1
  11. package/dist/utils/make-namespaced.d.ts.map +1 -1
  12. package/dist/utils/make-namespaced.js +40 -7
  13. package/dist/utils/make-namespaced.js.map +1 -1
  14. package/dist/validate/run.d.ts.map +1 -1
  15. package/dist/validate/run.js +24 -3
  16. package/dist/validate/run.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/cli/cli.test.ts.snap +0 -0
  19. package/src/cli/validate/project-report.test.ts.snap +0 -0
  20. package/src/cli/validate/validate-upgrade-safety.test.ts.snap +0 -0
  21. package/src/cli/validate/validations.test.ts.snap +0 -0
  22. package/src/index.ts +1 -0
  23. package/src/scripts/migrate-oz-cli-project.test.ts.snap +0 -0
  24. package/src/storage/report-gap.test.ts.snap +0 -0
  25. package/src/storage/report-rename-retype.test.ts.snap +0 -0
  26. package/src/storage/report.test.ts.snap +0 -0
  27. package/src/storage-0.8.test.ts.snap +0 -0
  28. package/src/storage-memory-0.5.test.ts.snap +0 -0
  29. package/src/storage-namespaced-conflicts-layout.test.ts.snap +0 -0
  30. package/src/storage-namespaced-conflicts.test.ts.snap +0 -0
  31. package/src/storage-namespaced-layout.test.ts.snap +0 -0
  32. package/src/storage-namespaced-outside-contract.test.ts +23 -8
  33. package/src/storage-namespaced.test.ts +26 -0
  34. package/src/storage-namespaced.test.ts.snap +0 -0
  35. package/src/storage.test.ts.snap +0 -0
  36. package/src/utils/make-namespaced.test.ts.md +123 -35
  37. package/src/utils/make-namespaced.test.ts.snap +0 -0
  38. package/src/utils/make-namespaced.ts +57 -15
  39. package/src/utils/parse-type-id.test.ts.snap +0 -0
  40. package/src/validate/run.ts +27 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.40.0 (2024-10-10)
4
+
5
+ - Fix Hardhat compile error when overriding interface functions with public constant variables. ([#1091](https://github.com/OpenZeppelin/openzeppelin-upgrades/pull/1091))
6
+ - Support ignoring Hardhat compile errors when extracting detailed namespaced storage layouts for validations. ([#1090](https://github.com/OpenZeppelin/openzeppelin-upgrades/pull/1090))
7
+
8
+ ## 1.39.0 (2024-10-02)
9
+
10
+ - Fix Hardhat compile error when library or interface has struct with namespace annotation. ([#1086](https://github.com/OpenZeppelin/openzeppelin-upgrades/pull/1086))
11
+ - Log warning if library contains namespace annotation. ([#1086](https://github.com/OpenZeppelin/openzeppelin-upgrades/pull/1086))
12
+
13
+ > **Note**
14
+ > Namespaces should be defined in contracts according to [ERC-7201: Namespaced Storage Layouts](https://eips.ethereum.org/EIPS/eip-7201). Structs with namespace annotations defined in libraries or interfaces outside of a contract's inheritance are not included in storage layout validations.
15
+
3
16
  ## 1.38.0 (2024-09-23)
4
17
 
5
18
  - Supports checking to ensure `initialOwner` is not a ProxyAdmin contract when deploying a transparent proxy from Hardhat. ([#1083](https://github.com/OpenZeppelin/openzeppelin-upgrades/pull/1083))
package/dist/index.d.ts CHANGED
@@ -25,4 +25,5 @@ export { getUpgradeInterfaceVersion } from './upgrade-interface-version';
25
25
  export { makeNamespacedInput } from './utils/make-namespaced';
26
26
  export { isNamespaceSupported } from './storage/namespace';
27
27
  export { inferProxyAdmin } from './infer-proxy-admin';
28
+ export { assertUnreachable } from './utils/assert';
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC7F,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,kCAAkC,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,8BAA8B,EAC9B,iCAAiC,EACjC,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAEtH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC7F,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,EACf,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,kCAAkC,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,8BAA8B,EAC9B,iCAAiC,EACjC,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,+BAA+B,EAC/B,+BAA+B,EAC/B,gCAAgC,EAChC,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAEtH,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.inferProxyAdmin = exports.isNamespaceSupported = exports.makeNamespacedInput = exports.getUpgradeInterfaceVersion = exports.ReferenceContractNotFound = exports.ProjectReport = exports.validateUpgradeSafety = exports.assertNotProxy = exports.InitialOwnerUnsupportedKindError = exports.PrepareUpgradeRequiresKindError = exports.ValidateUpdateRequiresKindError = exports.NoContractImportError = exports.ForceImportUnsupportedError = exports.DeployBeaconProxyKindError = exports.DeployBeaconProxyImplUnknownError = exports.DeployBeaconProxyUnsupportedError = exports.PrepareUpgradeUnsupportedError = exports.LoadProxyUnsupportedError = exports.BeaconProxyUnsupportedError = exports.addProxyToManifest = exports.isBeacon = exports.getImplementationAddressFromProxy = exports.getImplementationAddressFromBeacon = exports.isTransparentProxy = exports.isBeaconProxy = exports.isTransparentOrUUPSProxy = exports.UpgradeableContract = exports.detectProxyKind = exports.processProxyKind = exports.setProxyKind = exports.logWarning = exports.getStorageLayoutForAddress = exports.DeploymentNotFound = exports.migrateManifest = exports.Manifest = exports.isEmptySlot = exports.toFallbackEip1967Hash = exports.toEip1967Hash = exports.getImplementationAddress = exports.getBeaconAddress = exports.getAdminAddress = exports.EIP1967ImplementationNotFound = exports.EIP1967BeaconNotFound = exports.fetchOrDeployGetDeployment = exports.fetchOrDeployAdmin = exports.fetchOrDeploy = void 0;
17
+ exports.assertUnreachable = exports.inferProxyAdmin = exports.isNamespaceSupported = exports.makeNamespacedInput = exports.getUpgradeInterfaceVersion = exports.ReferenceContractNotFound = exports.ProjectReport = exports.validateUpgradeSafety = exports.assertNotProxy = exports.InitialOwnerUnsupportedKindError = exports.PrepareUpgradeRequiresKindError = exports.ValidateUpdateRequiresKindError = exports.NoContractImportError = exports.ForceImportUnsupportedError = exports.DeployBeaconProxyKindError = exports.DeployBeaconProxyImplUnknownError = exports.DeployBeaconProxyUnsupportedError = exports.PrepareUpgradeUnsupportedError = exports.LoadProxyUnsupportedError = exports.BeaconProxyUnsupportedError = exports.addProxyToManifest = exports.isBeacon = exports.getImplementationAddressFromProxy = exports.getImplementationAddressFromBeacon = exports.isTransparentProxy = exports.isBeaconProxy = exports.isTransparentOrUUPSProxy = exports.UpgradeableContract = exports.detectProxyKind = exports.processProxyKind = exports.setProxyKind = exports.logWarning = exports.getStorageLayoutForAddress = exports.DeploymentNotFound = exports.migrateManifest = exports.Manifest = exports.isEmptySlot = exports.toFallbackEip1967Hash = exports.toEip1967Hash = exports.getImplementationAddress = exports.getBeaconAddress = exports.getAdminAddress = exports.EIP1967ImplementationNotFound = exports.EIP1967BeaconNotFound = exports.fetchOrDeployGetDeployment = exports.fetchOrDeployAdmin = exports.fetchOrDeploy = void 0;
18
18
  __exportStar(require("./validate"), exports);
19
19
  var impl_store_1 = require("./impl-store");
20
20
  Object.defineProperty(exports, "fetchOrDeploy", { enumerable: true, get: function () { return impl_store_1.fetchOrDeploy; } });
@@ -88,4 +88,6 @@ var namespace_1 = require("./storage/namespace");
88
88
  Object.defineProperty(exports, "isNamespaceSupported", { enumerable: true, get: function () { return namespace_1.isNamespaceSupported; } });
89
89
  var infer_proxy_admin_1 = require("./infer-proxy-admin");
90
90
  Object.defineProperty(exports, "inferProxyAdmin", { enumerable: true, get: function () { return infer_proxy_admin_1.inferProxyAdmin; } });
91
+ var assert_1 = require("./utils/assert");
92
+ Object.defineProperty(exports, "assertUnreachable", { enumerable: true, get: function () { return assert_1.assertUnreachable; } });
91
93
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAA6F;AAApF,2GAAA,aAAa,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAAE,wHAAA,0BAA0B,OAAA;AACtE,4CAA0B;AAC1B,4CAA0B;AAC1B,uCASoB;AARlB,iHAAA,qBAAqB,OAAA;AACrB,yHAAA,6BAA6B,OAAA;AAC7B,2GAAA,eAAe,OAAA;AACf,4GAAA,gBAAgB,OAAA;AAChB,oHAAA,wBAAwB,OAAA;AACxB,yGAAA,aAAa,OAAA;AACb,iHAAA,qBAAqB,OAAA;AACrB,uGAAA,WAAW,OAAA;AAEb,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,0CAAwB;AAExB,uCAOoB;AAHlB,oGAAA,QAAQ,OAAA;AACR,2GAAA,eAAe,OAAA;AACf,8GAAA,kBAAkB,OAAA;AAGpB,qEAAuE;AAA9D,qIAAA,0BAA0B,OAAA;AAEnC,mEAAiD;AAEjD,mCAAyC;AAAhC,iGAAA,UAAU,OAAA;AACnB,2CAA+E;AAAtE,0GAAA,YAAY,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAExD,2CAAmD;AAA1C,iHAAA,mBAAmB,OAAA;AAE5B,iDAA8F;AAArF,yHAAA,wBAAwB,OAAA;AAAE,8GAAA,aAAa,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AACpE,+CAAuG;AAA9F,kIAAA,kCAAkC,OAAA;AAAE,iIAAA,iCAAiC,OAAA;AAC9E,mCAAoC;AAA3B,kGAAA,QAAQ,OAAA;AACjB,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAE3B,6CAauB;AAZrB,0HAAA,2BAA2B,OAAA;AAC3B,wHAAA,yBAAyB,OAAA;AACzB,6HAAA,8BAA8B,OAAA;AAC9B,gIAAA,iCAAiC,OAAA;AACjC,gIAAA,iCAAiC,OAAA;AACjC,yHAAA,0BAA0B,OAAA;AAC1B,0HAAA,2BAA2B,OAAA;AAC3B,oHAAA,qBAAqB,OAAA;AACrB,8HAAA,+BAA+B,OAAA;AAC/B,8HAAA,+BAA+B,OAAA;AAC/B,+HAAA,gCAAgC,OAAA;AAChC,6GAAA,cAAc,OAAA;AAGhB,6BAAsH;AAA/E,4GAAA,qBAAqB,OAAA;AAAE,oGAAA,aAAa,OAAA;AAAE,gHAAA,yBAAyB,OAAA;AAEtG,yEAAyE;AAAhE,uIAAA,0BAA0B,OAAA;AACnC,2DAA8D;AAArD,sHAAA,mBAAmB,OAAA;AAC5B,iDAA2D;AAAlD,iHAAA,oBAAoB,OAAA;AAC7B,yDAAsD;AAA7C,oHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAA6F;AAApF,2GAAA,aAAa,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAAE,wHAAA,0BAA0B,OAAA;AACtE,4CAA0B;AAC1B,4CAA0B;AAC1B,uCASoB;AARlB,iHAAA,qBAAqB,OAAA;AACrB,yHAAA,6BAA6B,OAAA;AAC7B,2GAAA,eAAe,OAAA;AACf,4GAAA,gBAAgB,OAAA;AAChB,oHAAA,wBAAwB,OAAA;AACxB,yGAAA,aAAa,OAAA;AACb,iHAAA,qBAAqB,OAAA;AACrB,uGAAA,WAAW,OAAA;AAEb,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,0CAAwB;AAExB,uCAOoB;AAHlB,oGAAA,QAAQ,OAAA;AACR,2GAAA,eAAe,OAAA;AACf,8GAAA,kBAAkB,OAAA;AAGpB,qEAAuE;AAA9D,qIAAA,0BAA0B,OAAA;AAEnC,mEAAiD;AAEjD,mCAAyC;AAAhC,iGAAA,UAAU,OAAA;AACnB,2CAA+E;AAAtE,0GAAA,YAAY,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAExD,2CAAmD;AAA1C,iHAAA,mBAAmB,OAAA;AAE5B,iDAA8F;AAArF,yHAAA,wBAAwB,OAAA;AAAE,8GAAA,aAAa,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AACpE,+CAAuG;AAA9F,kIAAA,kCAAkC,OAAA;AAAE,iIAAA,iCAAiC,OAAA;AAC9E,mCAAoC;AAA3B,kGAAA,QAAQ,OAAA;AACjB,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAE3B,6CAauB;AAZrB,0HAAA,2BAA2B,OAAA;AAC3B,wHAAA,yBAAyB,OAAA;AACzB,6HAAA,8BAA8B,OAAA;AAC9B,gIAAA,iCAAiC,OAAA;AACjC,gIAAA,iCAAiC,OAAA;AACjC,yHAAA,0BAA0B,OAAA;AAC1B,0HAAA,2BAA2B,OAAA;AAC3B,oHAAA,qBAAqB,OAAA;AACrB,8HAAA,+BAA+B,OAAA;AAC/B,8HAAA,+BAA+B,OAAA;AAC/B,+HAAA,gCAAgC,OAAA;AAChC,6GAAA,cAAc,OAAA;AAGhB,6BAAsH;AAA/E,4GAAA,qBAAqB,OAAA;AAAE,oGAAA,aAAa,OAAA;AAAE,gHAAA,yBAAyB,OAAA;AAEtG,yEAAyE;AAAhE,uIAAA,0BAA0B,OAAA;AACnC,2DAA8D;AAArD,sHAAA,mBAAmB,OAAA;AAC5B,iDAA2D;AAAlD,iHAAA,oBAAoB,OAAA;AAC7B,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AACxB,yCAAmD;AAA1C,2GAAA,iBAAiB,OAAA"}
@@ -7,8 +7,19 @@ const ava_1 = __importDefault(require("ava"));
7
7
  const hardhat_1 = require("hardhat");
8
8
  const validate_1 = require("./validate");
9
9
  const src_decoder_1 = require("./src-decoder");
10
- (0, ava_1.default)('namespace outside contract', async (t) => {
10
+ (0, ava_1.default)('namespace outside contract - error', async (t) => {
11
11
  const contract = 'contracts/test/NamespacedOutsideContract.sol:Example';
12
+ const { solcOutput, decodeSrc } = await getOutputAndDecoder(contract);
13
+ const error = t.throws(() => (0, validate_1.validate)(solcOutput, decodeSrc));
14
+ t.assert(error?.message.includes('contracts/test/NamespacedOutsideContract.sol:7: Namespace struct MainStorage is defined outside of a contract'), error?.message);
15
+ });
16
+ (0, ava_1.default)('namespace in library - warning', async (t) => {
17
+ const contract = 'contracts/test/NamespacedInLibrary.sol:UsesLibraryWithNamespace';
18
+ const { solcOutput, decodeSrc } = await getOutputAndDecoder(contract);
19
+ (0, validate_1.validate)(solcOutput, decodeSrc);
20
+ t.pass();
21
+ });
22
+ async function getOutputAndDecoder(contract) {
12
23
  const buildInfo = await hardhat_1.artifacts.getBuildInfo(contract);
13
24
  if (buildInfo === undefined) {
14
25
  throw new Error(`Build info not found for contract ${contract}`);
@@ -16,7 +27,6 @@ const src_decoder_1 = require("./src-decoder");
16
27
  const solcOutput = buildInfo.output;
17
28
  const solcInput = buildInfo.input;
18
29
  const decodeSrc = (0, src_decoder_1.solcInputOutputDecoder)(solcInput, solcOutput);
19
- const error = t.throws(() => (0, validate_1.validate)(solcOutput, decodeSrc));
20
- t.assert(error?.message.includes('contracts/test/NamespacedOutsideContract.sol:7: Namespace struct MainStorage is defined outside of a contract'), error?.message);
21
- });
30
+ return { solcOutput, decodeSrc };
31
+ }
22
32
  //# sourceMappingURL=storage-namespaced-outside-contract.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-namespaced-outside-contract.test.js","sourceRoot":"","sources":["../src/storage-namespaced-outside-contract.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AACvB,qCAAoC;AAEpC,yCAAsC;AACtC,+CAAuD;AAEvD,IAAA,aAAI,EAAC,4BAA4B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC3C,MAAM,QAAQ,GAAG,sDAAsD,CAAC;IAExE,MAAM,SAAS,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IACpC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;IAClC,MAAM,SAAS,GAAG,IAAA,oCAAsB,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAQ,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,MAAM,CACN,KAAK,EAAE,OAAO,CAAC,QAAQ,CACrB,+GAA+G,CAChH,EACD,KAAK,EAAE,OAAO,CACf,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"storage-namespaced-outside-contract.test.js","sourceRoot":"","sources":["../src/storage-namespaced-outside-contract.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AACvB,qCAAoC;AAEpC,yCAAsC;AACtC,+CAAuD;AAEvD,IAAA,aAAI,EAAC,oCAAoC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACnD,MAAM,QAAQ,GAAG,sDAAsD,CAAC;IAExE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAQ,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,MAAM,CACN,KAAK,EAAE,OAAO,CAAC,QAAQ,CACrB,+GAA+G,CAChH,EACD,KAAK,EAAE,OAAO,CACf,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,gCAAgC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC/C,MAAM,QAAQ,GAAG,iEAAiE,CAAC;IAEnF,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtE,IAAA,mBAAQ,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAEhC,CAAC,CAAC,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACjD,MAAM,SAAS,GAAG,MAAM,mBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IACpC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;IAClC,MAAM,SAAS,GAAG,IAAA,oCAAsB,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC"}
@@ -129,4 +129,28 @@ test('multiple namespaces and regular variables bad', t => {
129
129
  },
130
130
  });
131
131
  });
132
+ test('interface with namespace - upgrade ok', t => {
133
+ const v1 = t.context.extractStorageLayout('InterfaceWithNamespace');
134
+ const v2 = t.context.extractStorageLayout('InterfaceWithNamespaceV2_Ok');
135
+ const comparison = (0, storage_1.getStorageUpgradeErrors)(v1, v2);
136
+ t.deepEqual(comparison, []);
137
+ });
138
+ test('interface with namespace - upgrade bad', t => {
139
+ const v1 = t.context.extractStorageLayout('InterfaceWithNamespace');
140
+ const v2 = t.context.extractStorageLayout('InterfaceWithNamespaceV2_Bad');
141
+ const comparison = (0, storage_1.getStorageUpgradeErrors)(v1, v2);
142
+ t.like(comparison, {
143
+ length: 1,
144
+ 0: {
145
+ kind: 'delete',
146
+ original: {
147
+ contract: 'InterfaceWithNamespace',
148
+ label: 'x',
149
+ type: {
150
+ id: 't_uint256',
151
+ },
152
+ },
153
+ },
154
+ });
155
+ });
132
156
  //# sourceMappingURL=storage-namespaced.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-namespaced.test.js","sourceRoot":"","sources":["../src/storage-namespaced.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-namespaced.test.js","sourceRoot":"","sources":["../src/storage-namespaced.test.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,14 @@ import { SolcInput, SolcOutput } from '../solc-api';
6
6
  * This makes the following modifications to the input:
7
7
  * - Adds a state variable for each namespaced struct definition
8
8
  * - For each contract, for all node types that are not needed for storage layout or may call functions and constructors, converts them to dummy enums with random id
9
+ * - Mark contracts as abstract, since state variables are converted to dummy enums which would not generate public getters for inherited interface functions
9
10
  * - Converts all using for directives (at file level and in contracts) to dummy enums with random id (do not delete them to avoid orphaning possible NatSpec documentation)
10
11
  * - Converts all custom errors and constants (at file level) to dummy enums with the same name (do not delete them since they might be imported by other files)
11
12
  * - Replaces functions as follows:
12
- * - For regular function and free function, keep declarations since they may be referenced by constants (free functions may also be imported by other files). But simplify compilation by removing modifiers and body, and replace return parameters with bools which can be default initialized.
13
+ * - For regular function and free function, keep declarations since they may be referenced by constants (free functions may also be imported by other files). But simplify compilation as follows:
14
+ * - Avoid having to initialize return parameters: convert function to virtual if possible, or convert return parameters to bools which can be default initialized.
15
+ * - Delete modifiers
16
+ * - Delete function bodies
13
17
  * - Constructors are not needed, since we removed anything that may call constructors. Convert to dummy enums to avoid orphaning possible NatSpec.
14
18
  * - Fallback and receive functions are not needed, since they don't have signatures. Convert to dummy enums to avoid orphaning possible NatSpec.
15
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"make-namespaced.d.ts","sourceRoot":"","sources":["../../src/utils/make-namespaced.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAgIzG"}
1
+ {"version":3,"file":"make-namespaced.d.ts","sourceRoot":"","sources":["../../src/utils/make-namespaced.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAoIzG"}
@@ -17,10 +17,14 @@ const OUTPUT_SELECTION = {
17
17
  * This makes the following modifications to the input:
18
18
  * - Adds a state variable for each namespaced struct definition
19
19
  * - For each contract, for all node types that are not needed for storage layout or may call functions and constructors, converts them to dummy enums with random id
20
+ * - Mark contracts as abstract, since state variables are converted to dummy enums which would not generate public getters for inherited interface functions
20
21
  * - Converts all using for directives (at file level and in contracts) to dummy enums with random id (do not delete them to avoid orphaning possible NatSpec documentation)
21
22
  * - Converts all custom errors and constants (at file level) to dummy enums with the same name (do not delete them since they might be imported by other files)
22
23
  * - Replaces functions as follows:
23
- * - For regular function and free function, keep declarations since they may be referenced by constants (free functions may also be imported by other files). But simplify compilation by removing modifiers and body, and replace return parameters with bools which can be default initialized.
24
+ * - For regular function and free function, keep declarations since they may be referenced by constants (free functions may also be imported by other files). But simplify compilation as follows:
25
+ * - Avoid having to initialize return parameters: convert function to virtual if possible, or convert return parameters to bools which can be default initialized.
26
+ * - Delete modifiers
27
+ * - Delete function bodies
24
28
  * - Constructors are not needed, since we removed anything that may call constructors. Convert to dummy enums to avoid orphaning possible NatSpec.
25
29
  * - Fallback and receive functions are not needed, since they don't have signatures. Convert to dummy enums to avoid orphaning possible NatSpec.
26
30
  *
@@ -62,7 +66,7 @@ function makeNamespacedInput(input, output, solcVersion) {
62
66
  for (const contractNode of contractNodes) {
63
67
  switch (contractNode.nodeType) {
64
68
  case 'FunctionDefinition': {
65
- replaceFunction(contractNode, orig, modifications);
69
+ replaceFunction(contractNode, orig, modifications, contractDef);
66
70
  break;
67
71
  }
68
72
  case 'VariableDeclaration': {
@@ -81,6 +85,10 @@ function makeNamespacedInput(input, output, solcVersion) {
81
85
  break;
82
86
  }
83
87
  case 'StructDefinition': {
88
+ // Do not add state variable in a library or interface, since that is not allowed by Solidity
89
+ if (contractDef.contractKind !== 'contract') {
90
+ continue;
91
+ }
84
92
  const storageLocation = (0, namespace_1.getStorageLocationAnnotation)(contractNode);
85
93
  if (storageLocation !== undefined) {
86
94
  const structName = contractNode.name;
@@ -206,20 +214,45 @@ function toDummyEnumWithName(name) {
206
214
  function toDummyEnumWithAstId(astId) {
207
215
  return `enum $astId_${astId}_${(Math.random() * 1e6).toFixed(0)} { dummy }`;
208
216
  }
209
- function replaceFunction(node, orig, modifications) {
217
+ function replaceFunction(node, orig, modifications, contractDef) {
210
218
  switch (node.kind) {
211
219
  case 'freeFunction':
212
220
  case 'function': {
221
+ let virtual = node.virtual;
222
+ if (contractDef !== undefined &&
223
+ contractDef.contractKind === 'contract' &&
224
+ node.visibility !== 'private' &&
225
+ !virtual) {
226
+ (0, assert_1.assert)(node.kind !== 'freeFunction');
227
+ // If this is a contract function and not private, it could possibly override an interface function.
228
+ // We don't want to change its return parameters because that might cause a mismatch with the interface.
229
+ // Simply convert the function to virtual (if not already)
230
+ modifications.push(makeInsertAfter(node.parameters, ' virtual '));
231
+ virtual = true;
232
+ }
213
233
  if (node.modifiers.length > 0) {
234
+ // Delete modifiers
214
235
  for (const modifier of node.modifiers) {
215
236
  modifications.push(makeDelete(modifier, orig));
216
237
  }
217
238
  }
218
- if (node.returnParameters.parameters.length > 0) {
219
- modifications.push(makeReplace(node.returnParameters, orig, `(${node.returnParameters.parameters.map(param => toReturnParameterReplacement(param)).join(', ')})`));
220
- }
221
239
  if (node.body) {
222
- modifications.push(makeReplace(node.body, orig, '{}'));
240
+ // Delete body
241
+ if (virtual) {
242
+ modifications.push(makeReplace(node.body, orig, ';'));
243
+ }
244
+ else {
245
+ // This is a non-virtual function with a body, so that means it is not an interface function.
246
+ (0, assert_1.assert)(contractDef?.contractKind !== 'interface');
247
+ // Since all contract functions that are non-private were converted to virtual above, this cannot possibly override another function.
248
+ (0, assert_1.assert)(!node.overrides);
249
+ // The remaining scenarios may mean this is a library function, free function, or private function.
250
+ // In any of these cases, we can convert the return parameters to bools so that they can be default initialized.
251
+ if (node.returnParameters.parameters.length > 0) {
252
+ modifications.push(makeReplace(node.returnParameters, orig, `(${node.returnParameters.parameters.map(param => toReturnParameterReplacement(param)).join(', ')})`));
253
+ }
254
+ modifications.push(makeReplace(node.body, orig, '{}'));
255
+ }
223
256
  }
224
257
  break;
225
258
  }
@@ -1 +1 @@
1
- {"version":3,"file":"make-namespaced.js","sourceRoot":"","sources":["../../src/utils/make-namespaced.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"make-namespaced.js","sourceRoot":"","sources":["../../src/utils/make-namespaced.ts"],"names":[],"mappings":";;AAuCA,kDAoIC;AA3KD,8CAAgD;AAGhD,oDAAoE;AACpE,qCAAqD;AAGrD,MAAM,gBAAgB,GAAG;IACvB,GAAG,EAAE;QACH,GAAG,EAAE,CAAC,eAAe,CAAC;QACtB,EAAE,EAAE,CAAC,KAAK,CAAC;KACZ;CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,mBAAmB,CAAC,KAAgB,EAAE,MAAkB,EAAE,WAAoB;IAC5F,MAAM,eAAe,GAAyC,EAAE,CAAC;IAEjE,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,eAAe,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;YACrC,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAmB,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACxD,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC1B,MAAM,WAAW,GAAG,IAAI,CAAC;oBAEzB,iFAAiF;oBACjF,4EAA4E;oBAC5E,IAAI,WAAW,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;wBACrE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;oBACjE,CAAC;oBAED,oEAAoE;oBACpE,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC;oBAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;4BACrC,IAAA,eAAM,EAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;4BAC5C,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;wBACxE,CAAC;oBACH,CAAC;oBAED,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC;oBACxC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;wBACzC,QAAQ,YAAY,CAAC,QAAQ,EAAE,CAAC;4BAC9B,KAAK,oBAAoB,CAAC,CAAC,CAAC;gCAC1B,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;gCAChE,MAAM;4BACR,CAAC;4BACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;gCAC3B,4EAA4E;gCAC5E,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;oCAC1B,MAAM;gCACR,CAAC;gCACD,mDAAmD;4BACrD,CAAC;4BACD,KAAK,iBAAiB,CAAC;4BACvB,KAAK,iBAAiB,CAAC;4BACvB,KAAK,oBAAoB,CAAC;4BAC1B,KAAK,mBAAmB,CAAC,CAAC,CAAC;gCACzB,2GAA2G;gCAC3G,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gCAC3F,MAAM;4BACR,CAAC;4BACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gCACxB,6FAA6F;gCAC7F,IAAI,WAAW,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;oCAC5C,SAAS;gCACX,CAAC;gCACD,MAAM,eAAe,GAAG,IAAA,wCAA4B,EAAC,YAAY,CAAC,CAAC;gCACnE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;oCAClC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;oCACrC,MAAM,YAAY,GAAG,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oCAC1E,MAAM,UAAU,GAAG,IAAI,UAAU,IAAI,YAAY,GAAG,CAAC;oCAErD,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;gCAChE,CAAC;gCACD,MAAM;4BACR,CAAC;4BACD,KAAK,gBAAgB,CAAC;4BACtB,KAAK,gCAAgC,CAAC;4BACtC,OAAO,CAAC,CAAC,CAAC;gCACR,oEAAoE;gCACpE,oFAAoF;gCACpF,kDAAkD;gCAClD,MAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;gBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC1B,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;oBAC3C,MAAM;gBACR,CAAC;gBAED,yGAAyG;gBACzG,sFAAsF;gBACtF,qEAAqE;gBACrE,KAAK,qBAAqB,CAAC,CAAC,CAAC;oBAC3B,4EAA4E;oBAC5E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAClB,MAAM;oBACR,CAAC;oBACD,mDAAmD;gBACrD,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5E,MAAM;gBACR,CAAC;gBACD,8GAA8G;gBAC9G,iFAAiF;gBACjF,KAAK,mBAAmB;oBACtB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC3E,MAAM;gBACR,KAAK,gBAAgB,CAAC;gBACtB,KAAK,iBAAiB,CAAC;gBACvB,KAAK,iBAAiB,CAAC;gBACvB,KAAK,kBAAkB,CAAC;gBACxB,KAAK,gCAAgC,CAAC;gBACtC,OAAO,CAAC,CAAC,CAAC;oBACR,oEAAoE;oBACpE,+EAA+E;oBAC/E,iDAAiD;oBACjD,sEAAsE;oBACtE,oFAAoF;oBACpF,mFAAmF;oBACnF,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,yBAAyB,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;QAEtG,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,EAAE,CAAC;AACpH,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,WAAmB,EAAE,WAA+B;IACrF,MAAM,eAAe,GAAmB,EAAE,CAAC;IAE3C,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,CAAC,wBAAwB,CAAC,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3G,uDAAuD;QACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAChE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAClF,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/C,sDAAsD;QAEtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAE9C,OACE,MAAM,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,uBAAuB,EAAE,YAAY,CAAC,wBAAwB,CAAC,CAAC,EAC/G,CAAC;YACD,4EAA4E;YAC5E,kFAAkF;YAClF,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,eAAe,CAAC,gBAAgB,EAAE,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9E,yBAAyB;YAC3B,CAAC;YACD,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;gBAC/D,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,IAAA,eAAM,EAAC,UAAU,YAAY,YAAY,CAAC,CAAC;YAC3C,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,IAAI,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,aAAa;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,uDAAuD;IACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAChE,sDAAsD;IAEtD,OAAO,QAAQ,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC5D,CAAC;AAQD,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,QAAQ,IAAI,YAAY,CAAC;AAClC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,eAAe,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CACtB,IAAwB,EACxB,IAAY,EACZ,aAA6B,EAC7B,WAAgC;IAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,cAAc,CAAC;QACpB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAE3B,IACE,WAAW,KAAK,SAAS;gBACzB,WAAW,CAAC,YAAY,KAAK,UAAU;gBACvC,IAAI,CAAC,UAAU,KAAK,SAAS;gBAC7B,CAAC,OAAO,EACR,CAAC;gBACD,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;gBAErC,oGAAoG;gBACpG,wGAAwG;gBACxG,0DAA0D;gBAC1D,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;gBAClE,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,mBAAmB;gBACnB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACtC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,cAAc;gBACd,IAAI,OAAO,EAAE,CAAC;oBACZ,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,6FAA6F;oBAC7F,IAAA,eAAM,EAAC,WAAW,EAAE,YAAY,KAAK,WAAW,CAAC,CAAC;oBAClD,qIAAqI;oBACrI,IAAA,eAAM,EAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAExB,mGAAmG;oBACnG,gHAAgH;oBAChH,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAChD,aAAa,CAAC,IAAI,CAChB,WAAW,CACT,IAAI,CAAC,gBAAgB,EACrB,IAAI,EACJ,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrG,CACF,CAAC;oBACJ,CAAC;oBACD,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,MAAM;QACR,CAAC;QACD,KAAK,aAAa,CAAC;QACnB,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,MAAM;QACR,CAAC;QACD;YACE,OAAO,IAAA,0BAAiB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,KAA0B;IAC9D,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAU;IAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,IAAU,EAAE,IAAY,EAAE,IAAY;IACzD,iCAAiC;IACjC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU,EAAE,IAAY;IAChD,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,IAAY;IAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,IAAU,EAAE,IAAY;IAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;IACxB,+DAA+D;IAC/D,IAAI,IAAA,kBAAU,EAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClF,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzE,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,GAAW;IACjD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,aAA6B;IACpE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAA,eAAM,EAAC,YAAY,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;QAC5C,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC;IACnC,CAAC;IAED,IAAA,eAAM,EAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AACjD,OAAO,EAAyB,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOlD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,gPAWb,CAAC;AAEX,MAAM,MAAM,eAAe,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,uBAAuB,GACvB,6BAA6B,CAAC;AAElC,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,UAAU,uBAAwB,SAAQ,mBAAmB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,mBAAmB,GACnB,iBAAiB,GACjB,2BAA2B,CAAC;CACjC;AAED,UAAU,0BAA2B,SAAQ,mBAAmB;IAC9D,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,mBAAmB;IACzD,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC;CACvC;AAkBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,qBAAqB,CAExF;AAED,UAAU,6BAA8B,SAAQ,mBAAmB;IACjE,IAAI,EAAE,0BAA0B,CAAC;CAClC;AAYD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,YAEzD;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CACtB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,SAAS,EACrB,gBAAgB,CAAC,EAAE,UAAU,GAC5B,iBAAiB,CAmFnB"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AACjD,OAAO,EAAyB,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQlD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,UAAU,gPAWb,CAAC;AAEX,MAAM,MAAM,eAAe,GACvB,0BAA0B,GAC1B,qBAAqB,GACrB,uBAAuB,GACvB,6BAA6B,CAAC;AAElC,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,UAAU,uBAAwB,SAAQ,mBAAmB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EACA,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,mBAAmB,GACnB,iBAAiB,GACjB,2BAA2B,CAAC;CACjC;AAED,UAAU,0BAA2B,SAAQ,mBAAmB;IAC9D,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,mBAAmB;IACzD,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC;CACvC;AAkBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,IAAI,qBAAqB,CAExF;AAED,UAAU,6BAA8B,SAAQ,mBAAmB;IACjE,IAAI,EAAE,0BAA0B,CAAC;CAClC;AAYD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,YAEzD;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CACtB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,SAAS,EACrB,gBAAgB,CAAC,EAAE,UAAU,GAC5B,iBAAiB,CAmFnB"}
@@ -19,6 +19,7 @@ const annotations_1 = require("../utils/annotations");
19
19
  const namespace_1 = require("../storage/namespace");
20
20
  const error_1 = require("../error");
21
21
  const assert_1 = require("../utils/assert");
22
+ const log_1 = require("../utils/log");
22
23
  exports.errorKinds = [
23
24
  'state-variable-assignment',
24
25
  'state-variable-immutable',
@@ -167,13 +168,33 @@ function checkNamespaceSolidityVersion(source, solcVersion, solcInput) {
167
168
  function checkNamespacesOutsideContract(source, solcOutput, decodeSrc) {
168
169
  for (const node of solcOutput.sources[source].ast.nodes) {
169
170
  if ((0, utils_1.isNodeType)('StructDefinition', node)) {
170
- const storageLocation = (0, namespace_1.getStorageLocationAnnotation)(node);
171
- if (storageLocation !== undefined) {
172
- throw new error_1.UpgradesError(`${decodeSrc(node)}: Namespace struct ${node.name} is defined outside of a contract`, () => `Structs with the @custom:storage-location annotation must be defined within a contract. Move the struct definition into a contract, or remove the annotation if the struct is not used for namespaced storage.`);
171
+ // Namespace struct outside contract - error
172
+ assertNotNamespace(node, decodeSrc, true);
173
+ }
174
+ else if ((0, utils_1.isNodeType)('ContractDefinition', node) && node.contractKind === 'library') {
175
+ // Namespace struct in library - warning (don't give an error to avoid breaking changes, since this is quite common)
176
+ for (const child of node.nodes) {
177
+ if ((0, utils_1.isNodeType)('StructDefinition', child)) {
178
+ assertNotNamespace(child, decodeSrc, false);
179
+ }
173
180
  }
174
181
  }
175
182
  }
176
183
  }
184
+ function assertNotNamespace(node, decodeSrc, strict) {
185
+ const storageLocation = (0, namespace_1.getStorageLocationAnnotation)(node);
186
+ if (storageLocation !== undefined) {
187
+ const msg = `${decodeSrc(node)}: Namespace struct ${node.name} is defined outside of a contract`;
188
+ if (strict) {
189
+ throw new error_1.UpgradesError(msg, () => `Structs with the @custom:storage-location annotation must be defined within a contract. Move the struct definition into a contract, or remove the annotation if the struct is not used for namespaced storage.`);
190
+ }
191
+ else {
192
+ (0, log_1.logWarning)(msg, [
193
+ 'Structs with the @custom:storage-location annotation must be defined within a contract, otherwise they are not included in storage layout validations. Move the struct definition into a contract, or remove the annotation if the struct is not used for namespaced storage.',
194
+ ]);
195
+ }
196
+ }
197
+ }
177
198
  function getNamespacedCompilationContext(source, contractDef, namespacedOutput) {
178
199
  if (namespacedOutput === undefined || contractDef.canonicalName === undefined) {
179
200
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/validate/run.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/upgrades-core",
3
- "version": "1.38.0",
3
+ "version": "1.40.0",
4
4
  "description": "",
5
5
  "repository": "https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/core",
6
6
  "license": "MIT",
Binary file
package/src/index.ts CHANGED
@@ -63,3 +63,4 @@ export { getUpgradeInterfaceVersion } from './upgrade-interface-version';
63
63
  export { makeNamespacedInput } from './utils/make-namespaced';
64
64
  export { isNamespaceSupported } from './storage/namespace';
65
65
  export { inferProxyAdmin } from './infer-proxy-admin';
66
+ export { assertUnreachable } from './utils/assert';
Binary file
Binary file
Binary file
Binary file
@@ -4,16 +4,11 @@ import { artifacts } from 'hardhat';
4
4
  import { validate } from './validate';
5
5
  import { solcInputOutputDecoder } from './src-decoder';
6
6
 
7
- test('namespace outside contract', async t => {
7
+ test('namespace outside contract - error', async t => {
8
8
  const contract = 'contracts/test/NamespacedOutsideContract.sol:Example';
9
9
 
10
- const buildInfo = await artifacts.getBuildInfo(contract);
11
- if (buildInfo === undefined) {
12
- throw new Error(`Build info not found for contract ${contract}`);
13
- }
14
- const solcOutput = buildInfo.output;
15
- const solcInput = buildInfo.input;
16
- const decodeSrc = solcInputOutputDecoder(solcInput, solcOutput);
10
+ const { solcOutput, decodeSrc } = await getOutputAndDecoder(contract);
11
+
17
12
  const error = t.throws(() => validate(solcOutput, decodeSrc));
18
13
  t.assert(
19
14
  error?.message.includes(
@@ -22,3 +17,23 @@ test('namespace outside contract', async t => {
22
17
  error?.message,
23
18
  );
24
19
  });
20
+
21
+ test('namespace in library - warning', async t => {
22
+ const contract = 'contracts/test/NamespacedInLibrary.sol:UsesLibraryWithNamespace';
23
+
24
+ const { solcOutput, decodeSrc } = await getOutputAndDecoder(contract);
25
+ validate(solcOutput, decodeSrc);
26
+
27
+ t.pass();
28
+ });
29
+
30
+ async function getOutputAndDecoder(contract: string) {
31
+ const buildInfo = await artifacts.getBuildInfo(contract);
32
+ if (buildInfo === undefined) {
33
+ throw new Error(`Build info not found for contract ${contract}`);
34
+ }
35
+ const solcOutput = buildInfo.output;
36
+ const solcInput = buildInfo.input;
37
+ const decodeSrc = solcInputOutputDecoder(solcInput, solcOutput);
38
+ return { solcOutput, decodeSrc };
39
+ }
@@ -144,3 +144,29 @@ test('multiple namespaces and regular variables bad', t => {
144
144
  },
145
145
  });
146
146
  });
147
+
148
+ test('interface with namespace - upgrade ok', t => {
149
+ const v1 = t.context.extractStorageLayout('InterfaceWithNamespace');
150
+ const v2 = t.context.extractStorageLayout('InterfaceWithNamespaceV2_Ok');
151
+ const comparison = getStorageUpgradeErrors(v1, v2);
152
+ t.deepEqual(comparison, []);
153
+ });
154
+
155
+ test('interface with namespace - upgrade bad', t => {
156
+ const v1 = t.context.extractStorageLayout('InterfaceWithNamespace');
157
+ const v2 = t.context.extractStorageLayout('InterfaceWithNamespaceV2_Bad');
158
+ const comparison = getStorageUpgradeErrors(v1, v2);
159
+ t.like(comparison, {
160
+ length: 1,
161
+ 0: {
162
+ kind: 'delete',
163
+ original: {
164
+ contract: 'InterfaceWithNamespace',
165
+ label: 'x',
166
+ type: {
167
+ id: 't_uint256',
168
+ },
169
+ },
170
+ },
171
+ });
172
+ });
Binary file
Binary file
@@ -53,13 +53,13 @@ Generated by [AVA](https://avajs.dev).
53
53
  } StorageWithComment $StorageWithComment_random;␊
54
54
  ␊
55
55
  ␊
56
- function foo() public {}␊
56
+ function foo() virtual public ;␊
57
57
  ␊
58
58
  ␊
59
- function foo1(uint a) public {}␊
59
+ function foo1(uint a) virtual public ;␊
60
60
  ␊
61
61
  ␊
62
- function foo2(uint a) internal {}␊
62
+ function foo2(uint a) virtual internal ;␊
63
63
  struct MyStruct { uint b; }␊
64
64
  ␊
65
65
  // keccak256(abi.encode(uint256(keccak256("example.main")) - 1)) & ~bytes32(uint256(0xff));␊
@@ -68,7 +68,7 @@ Generated by [AVA](https://avajs.dev).
68
68
  ␊
69
69
  function _getMainStorage() private pure returns (bool $) {}␊
70
70
  ␊
71
- function _getXTimesY() internal view returns (bool) {}␊
71
+ function _getXTimesY() virtual internal view returns (uint256) ;␊
72
72
  ␊
73
73
  ␊
74
74
  ␊
@@ -80,10 +80,10 @@ Generated by [AVA](https://avajs.dev).
80
80
  ␊
81
81
  ␊
82
82
  ␊
83
- function foo3() public {}␊
83
+ function foo3() virtual public ;␊
84
84
  ␊
85
85
  ␊
86
- function foo4() public {}␊
86
+ function foo4() virtual public ;␊
87
87
  ␊
88
88
  ␊
89
89
  enum $astId_id_random { dummy }␊
@@ -99,7 +99,7 @@ Generated by [AVA](https://avajs.dev).
99
99
  ␊
100
100
  enum $astId_id_random { dummy }␊
101
101
  ␊
102
- function foo() pure public returns (bool) {}␊
102
+ function foo() virtual pure public returns (uint) ;␊
103
103
  }␊
104
104
  ␊
105
105
  abstract contract UsingFunction is HasFunction {␊
@@ -119,11 +119,11 @@ Generated by [AVA](https://avajs.dev).
119
119
  abstract contract Consumer {␊
120
120
  enum $astId_id_random { dummy }␊
121
121
  ␊
122
- function usingFreeFunction() pure public returns (bool) {}␊
122
+ function usingFreeFunction() virtual pure public returns (bytes4) ;␊
123
123
  ␊
124
- function usingConstant() pure public returns (bool) {}␊
124
+ function usingConstant() virtual pure public returns (bytes4) ;␊
125
125
  ␊
126
- function usingLibraryFunction() pure public returns (bool) {}␊
126
+ function usingLibraryFunction() virtual pure public returns (bytes4) ;␊
127
127
  }␊
128
128
  ␊
129
129
  abstract contract HasConstantWithSelector {␊
@@ -150,7 +150,7 @@ Generated by [AVA](https://avajs.dev).
150
150
  abstract contract UsingForDirectives {␊
151
151
  enum $astId_id_random { dummy }␊
152
152
  ␊
153
- function usingFor(uint x) pure public returns (bool) {}␊
153
+ function usingFor(uint x) virtual pure public returns (uint) ;␊
154
154
  }␊
155
155
  ␊
156
156
  ␊
@@ -190,7 +190,14 @@ Generated by [AVA](https://avajs.dev).
190
190
  ␊
191
191
  abstract contract HasFunctionWithRequiredReturn {␊
192
192
  struct S { uint x; }␊
193
- function foo(S calldata s) internal pure returns (bool) {}␊
193
+ enum $astId_id_random { dummy }␊
194
+ function foo(S calldata s) virtual internal pure returns (S calldata) ;␊
195
+ }␊
196
+ ␊
197
+ library LibWithRequiredReturn {␊
198
+ struct S { uint x; }␊
199
+ enum $astId_id_random { dummy }␊
200
+ function foo(S calldata s) internal pure returns (bool) {}␊
194
201
  }␊
195
202
  ␊
196
203
  ␊
@@ -204,17 +211,17 @@ Generated by [AVA](https://avajs.dev).
204
211
  ␊
205
212
  abstract contract HasNatSpecWithMultipleReturns {␊
206
213
  ␊
207
- function hasMultipleReturnsInContract() public pure returns (bool, bool) {}␊
214
+ function hasMultipleReturnsInContract() virtual public pure returns (uint, uint) ;␊
208
215
  ␊
209
216
  ␊
210
- function hasMultipleNamedReturnsInContract() public pure returns (bool a, bool b) {}␊
217
+ function hasMultipleNamedReturnsInContract() virtual public pure returns (uint a, uint b) ;␊
211
218
  ␊
212
219
  ␊
213
- function hasReturnsDocumentedAsParamsInContract() public pure returns (bool a, bool b) {}␊
220
+ function hasReturnsDocumentedAsParamsInContract() virtual public pure returns (uint a, uint b) ;␊
214
221
  }␊
215
222
  ␊
216
223
  interface IHasExternalViewFunction {␊
217
- function foo() external view returns (bool);␊
224
+ function foo() external view returns (uint256);␊
218
225
  }␊
219
226
  ␊
220
227
  abstract contract HasExternalViewFunction is IHasExternalViewFunction {␊
@@ -240,9 +247,46 @@ Generated by [AVA](https://avajs.dev).
240
247
  enum $astId_id_random { dummy }␊
241
248
  ␊
242
249
  // Regular function but payable␊
243
- function hasPayable() public payable {}␊
250
+ function hasPayable() virtual public payable ;␊
244
251
  ␊
245
252
  bytes4 constant PAYABLE_SELECTOR = this.hasPayable.selector;␊
253
+ }␊
254
+ ␊
255
+ ␊
256
+ library LibraryWithNamespace {␊
257
+ /// @custom:storage-location erc7201:example.main␊
258
+ struct MainStorage {␊
259
+ uint256 x;␊
260
+ uint256 y;␊
261
+ }␊
262
+ }␊
263
+ ␊
264
+ interface InterfaceWithNamespace {␊
265
+ /// @custom:storage-location erc7201:example.main␊
266
+ struct MainStorage {␊
267
+ uint256 x;␊
268
+ uint256 y;␊
269
+ }␊
270
+ }␊
271
+ ␊
272
+ interface IHasConstantGetter {␊
273
+ function a() external view returns (bytes32);␊
274
+ }␊
275
+ ␊
276
+ abstract contract HasConstantGetter is IHasConstantGetter {␊
277
+ bytes32 public override constant a = bytes32("foo");␊
278
+ }␊
279
+ ␊
280
+ abstract contract AbstractHasConstantGetter {␊
281
+ function a() virtual external pure returns (bytes32) ;␊
282
+ }␊
283
+ ␊
284
+ abstract contract HasConstantGetterOverride is AbstractHasConstantGetter {␊
285
+ bytes32 public override constant a = bytes32("foo");␊
286
+ }␊
287
+ ␊
288
+ abstract contract HasFunctionOverride is AbstractHasConstantGetter {␊
289
+ function a() override virtual external pure returns (bytes32) ;␊
246
290
  }`,
247
291
  },
248
292
  'contracts/test/NamespacedToModifyImported.sol': {
@@ -306,13 +350,13 @@ Generated by [AVA](https://avajs.dev).
306
350
  } StorageWithComment $StorageWithComment_random;␊
307
351
  ␊
308
352
  /// @notice some natspec␊
309
- function foo() public {}␊
353
+ function foo() virtual public ;␊
310
354
  ␊
311
355
  /// @param a docs␊
312
- function foo1(uint a) public {}␊
356
+ function foo1(uint a) virtual public ;␊
313
357
  ␊
314
358
  /// @param a docs␊
315
- function foo2(uint a) internal {}␊
359
+ function foo2(uint a) virtual internal ;␊
316
360
  struct MyStruct { uint b; }␊
317
361
  ␊
318
362
  // keccak256(abi.encode(uint256(keccak256("example.main")) - 1)) & ~bytes32(uint256(0xff));␊
@@ -321,7 +365,7 @@ Generated by [AVA](https://avajs.dev).
321
365
  ␊
322
366
  function _getMainStorage() private pure returns (bool $) {}␊
323
367
  ␊
324
- function _getXTimesY() internal view returns (bool) {}␊
368
+ function _getXTimesY() virtual internal view returns (uint256) ;␊
325
369
  ␊
326
370
  /// @notice standlone natspec␊
327
371
  ␊
@@ -337,14 +381,14 @@ Generated by [AVA](https://avajs.dev).
337
381
  /**␊
338
382
  * doc block without natspec␊
339
383
  */␊
340
- function foo3() public {}␊
384
+ function foo3() virtual public ;␊
341
385
  ␊
342
386
  /**␊
343
387
  * doc block with natspec␊
344
388
  *␊
345
389
  * @notice some natspec␊
346
390
  */␊
347
- function foo4() public {}␊
391
+ function foo4() virtual public ;␊
348
392
  ␊
349
393
  /**␊
350
394
  * @dev a custom error inside a contract␊
@@ -362,7 +406,7 @@ Generated by [AVA](https://avajs.dev).
362
406
  /// @param myInt an integer␊
363
407
  enum $astId_id_random { dummy }␊
364
408
  ␊
365
- function foo() pure public returns (bool) {}␊
409
+ function foo() virtual pure public returns (uint) ;␊
366
410
  }␊
367
411
  ␊
368
412
  abstract contract UsingFunction is HasFunction {␊
@@ -382,11 +426,11 @@ Generated by [AVA](https://avajs.dev).
382
426
  abstract contract Consumer {␊
383
427
  enum $astId_id_random { dummy }␊
384
428
  ␊
385
- function usingFreeFunction() pure public returns (bool) {}␊
429
+ function usingFreeFunction() virtual pure public returns (bytes4) ;␊
386
430
  ␊
387
- function usingConstant() pure public returns (bool) {}␊
431
+ function usingConstant() virtual pure public returns (bytes4) ;␊
388
432
  ␊
389
- function usingLibraryFunction() pure public returns (bool) {}␊
433
+ function usingLibraryFunction() virtual pure public returns (bytes4) ;␊
390
434
  }␊
391
435
  ␊
392
436
  abstract contract HasConstantWithSelector {␊
@@ -424,7 +468,7 @@ Generated by [AVA](https://avajs.dev).
424
468
  abstract contract UsingForDirectives {␊
425
469
  enum $astId_id_random { dummy }␊
426
470
  ␊
427
- function usingFor(uint x) pure public returns (bool) {}␊
471
+ function usingFor(uint x) virtual pure public returns (uint) ;␊
428
472
  }␊
429
473
  ␊
430
474
  /**␊
@@ -476,7 +520,14 @@ Generated by [AVA](https://avajs.dev).
476
520
  ␊
477
521
  abstract contract HasFunctionWithRequiredReturn {␊
478
522
  struct S { uint x; }␊
479
- function foo(S calldata s) internal pure returns (bool) {}␊
523
+ enum $astId_id_random { dummy }␊
524
+ function foo(S calldata s) virtual internal pure returns (S calldata) ;␊
525
+ }␊
526
+ ␊
527
+ library LibWithRequiredReturn {␊
528
+ struct S { uint x; }␊
529
+ enum $astId_id_random { dummy }␊
530
+ function foo(S calldata s) internal pure returns (bool) {}␊
480
531
  }␊
481
532
  ␊
482
533
  /**␊
@@ -502,23 +553,23 @@ Generated by [AVA](https://avajs.dev).
502
553
  * @return uint 1␊
503
554
  * @return uint 2␊
504
555
  */␊
505
- function hasMultipleReturnsInContract() public pure returns (bool, bool) {}␊
556
+ function hasMultipleReturnsInContract() virtual public pure returns (uint, uint) ;␊
506
557
  ␊
507
558
  /**␊
508
559
  * @return a first␊
509
560
  * @return b second␊
510
561
  */␊
511
- function hasMultipleNamedReturnsInContract() public pure returns (bool a, bool b) {}␊
562
+ function hasMultipleNamedReturnsInContract() virtual public pure returns (uint a, uint b) ;␊
512
563
  ␊
513
564
  /**␊
514
565
  * @param a first␊
515
566
  * @param b second␊
516
567
  */␊
517
- function hasReturnsDocumentedAsParamsInContract() public pure returns (bool a, bool b) {}␊
568
+ function hasReturnsDocumentedAsParamsInContract() virtual public pure returns (uint a, uint b) ;␊
518
569
  }␊
519
570
  ␊
520
571
  interface IHasExternalViewFunction {␊
521
- function foo() external view returns (bool);␊
572
+ function foo() external view returns (uint256);␊
522
573
  }␊
523
574
  ␊
524
575
  abstract contract HasExternalViewFunction is IHasExternalViewFunction {␊
@@ -544,9 +595,46 @@ Generated by [AVA](https://avajs.dev).
544
595
  enum $astId_id_random { dummy }␊
545
596
  ␊
546
597
  // Regular function but payable␊
547
- function hasPayable() public payable {}␊
598
+ function hasPayable() virtual public payable ;␊
548
599
  ␊
549
600
  bytes4 constant PAYABLE_SELECTOR = this.hasPayable.selector;␊
601
+ }␊
602
+ ␊
603
+ /// This is not considered a namespace according to ERC-7201 because the namespaced struct is outside of a contract.␊
604
+ library LibraryWithNamespace {␊
605
+ /// @custom:storage-location erc7201:example.main␊
606
+ struct MainStorage {␊
607
+ uint256 x;␊
608
+ uint256 y;␊
609
+ }␊
610
+ }␊
611
+ ␊
612
+ interface InterfaceWithNamespace {␊
613
+ /// @custom:storage-location erc7201:example.main␊
614
+ struct MainStorage {␊
615
+ uint256 x;␊
616
+ uint256 y;␊
617
+ }␊
618
+ }␊
619
+ ␊
620
+ interface IHasConstantGetter {␊
621
+ function a() external view returns (bytes32);␊
622
+ }␊
623
+ ␊
624
+ abstract contract HasConstantGetter is IHasConstantGetter {␊
625
+ bytes32 public override constant a = bytes32("foo");␊
626
+ }␊
627
+ ␊
628
+ abstract contract AbstractHasConstantGetter {␊
629
+ function a() virtual external pure returns (bytes32) ;␊
630
+ }␊
631
+ ␊
632
+ abstract contract HasConstantGetterOverride is AbstractHasConstantGetter {␊
633
+ bytes32 public override constant a = bytes32("foo");␊
634
+ }␊
635
+ ␊
636
+ abstract contract HasFunctionOverride is AbstractHasConstantGetter {␊
637
+ function a() override virtual external pure returns (bytes32) ;␊
550
638
  }`,
551
639
  },
552
640
  'contracts/test/NamespacedToModifyImported.sol': {
@@ -590,7 +678,7 @@ Generated by [AVA](https://avajs.dev).
590
678
  ␊
591
679
  abstract contract HasFunction {␊
592
680
  enum $astId_id_random { dummy }␊
593
- function foo() pure public returns (bool) {}␊
681
+ function foo() virtual pure public returns (uint) ;␊
594
682
  }␊
595
683
  ␊
596
684
  abstract contract UsingFunction is HasFunction {␊
@@ -3,7 +3,7 @@ import { Node } from 'solidity-ast/node';
3
3
  import { SolcInput, SolcOutput } from '../solc-api';
4
4
  import { getStorageLocationAnnotation } from '../storage/namespace';
5
5
  import { assert, assertUnreachable } from './assert';
6
- import { FunctionDefinition, VariableDeclaration } from 'solidity-ast';
6
+ import { ContractDefinition, FunctionDefinition, VariableDeclaration } from 'solidity-ast';
7
7
 
8
8
  const OUTPUT_SELECTION = {
9
9
  '*': {
@@ -19,10 +19,14 @@ const OUTPUT_SELECTION = {
19
19
  * This makes the following modifications to the input:
20
20
  * - Adds a state variable for each namespaced struct definition
21
21
  * - For each contract, for all node types that are not needed for storage layout or may call functions and constructors, converts them to dummy enums with random id
22
+ * - Mark contracts as abstract, since state variables are converted to dummy enums which would not generate public getters for inherited interface functions
22
23
  * - Converts all using for directives (at file level and in contracts) to dummy enums with random id (do not delete them to avoid orphaning possible NatSpec documentation)
23
24
  * - Converts all custom errors and constants (at file level) to dummy enums with the same name (do not delete them since they might be imported by other files)
24
25
  * - Replaces functions as follows:
25
- * - For regular function and free function, keep declarations since they may be referenced by constants (free functions may also be imported by other files). But simplify compilation by removing modifiers and body, and replace return parameters with bools which can be default initialized.
26
+ * - For regular function and free function, keep declarations since they may be referenced by constants (free functions may also be imported by other files). But simplify compilation as follows:
27
+ * - Avoid having to initialize return parameters: convert function to virtual if possible, or convert return parameters to bools which can be default initialized.
28
+ * - Delete modifiers
29
+ * - Delete function bodies
26
30
  * - Constructors are not needed, since we removed anything that may call constructors. Convert to dummy enums to avoid orphaning possible NatSpec.
27
31
  * - Fallback and receive functions are not needed, since they don't have signatures. Convert to dummy enums to avoid orphaning possible NatSpec.
28
32
  *
@@ -72,7 +76,7 @@ export function makeNamespacedInput(input: SolcInput, output: SolcOutput, solcVe
72
76
  for (const contractNode of contractNodes) {
73
77
  switch (contractNode.nodeType) {
74
78
  case 'FunctionDefinition': {
75
- replaceFunction(contractNode, orig, modifications);
79
+ replaceFunction(contractNode, orig, modifications, contractDef);
76
80
  break;
77
81
  }
78
82
  case 'VariableDeclaration': {
@@ -91,6 +95,10 @@ export function makeNamespacedInput(input: SolcInput, output: SolcOutput, solcVe
91
95
  break;
92
96
  }
93
97
  case 'StructDefinition': {
98
+ // Do not add state variable in a library or interface, since that is not allowed by Solidity
99
+ if (contractDef.contractKind !== 'contract') {
100
+ continue;
101
+ }
94
102
  const storageLocation = getStorageLocationAnnotation(contractNode);
95
103
  if (storageLocation !== undefined) {
96
104
  const structName = contractNode.name;
@@ -239,28 +247,62 @@ function toDummyEnumWithAstId(astId: number) {
239
247
  return `enum $astId_${astId}_${(Math.random() * 1e6).toFixed(0)} { dummy }`;
240
248
  }
241
249
 
242
- function replaceFunction(node: FunctionDefinition, orig: Buffer, modifications: Modification[]) {
250
+ function replaceFunction(
251
+ node: FunctionDefinition,
252
+ orig: Buffer,
253
+ modifications: Modification[],
254
+ contractDef?: ContractDefinition,
255
+ ) {
243
256
  switch (node.kind) {
244
257
  case 'freeFunction':
245
258
  case 'function': {
259
+ let virtual = node.virtual;
260
+
261
+ if (
262
+ contractDef !== undefined &&
263
+ contractDef.contractKind === 'contract' &&
264
+ node.visibility !== 'private' &&
265
+ !virtual
266
+ ) {
267
+ assert(node.kind !== 'freeFunction');
268
+
269
+ // If this is a contract function and not private, it could possibly override an interface function.
270
+ // We don't want to change its return parameters because that might cause a mismatch with the interface.
271
+ // Simply convert the function to virtual (if not already)
272
+ modifications.push(makeInsertAfter(node.parameters, ' virtual '));
273
+ virtual = true;
274
+ }
275
+
246
276
  if (node.modifiers.length > 0) {
277
+ // Delete modifiers
247
278
  for (const modifier of node.modifiers) {
248
279
  modifications.push(makeDelete(modifier, orig));
249
280
  }
250
281
  }
251
282
 
252
- if (node.returnParameters.parameters.length > 0) {
253
- modifications.push(
254
- makeReplace(
255
- node.returnParameters,
256
- orig,
257
- `(${node.returnParameters.parameters.map(param => toReturnParameterReplacement(param)).join(', ')})`,
258
- ),
259
- );
260
- }
261
-
262
283
  if (node.body) {
263
- modifications.push(makeReplace(node.body, orig, '{}'));
284
+ // Delete body
285
+ if (virtual) {
286
+ modifications.push(makeReplace(node.body, orig, ';'));
287
+ } else {
288
+ // This is a non-virtual function with a body, so that means it is not an interface function.
289
+ assert(contractDef?.contractKind !== 'interface');
290
+ // Since all contract functions that are non-private were converted to virtual above, this cannot possibly override another function.
291
+ assert(!node.overrides);
292
+
293
+ // The remaining scenarios may mean this is a library function, free function, or private function.
294
+ // In any of these cases, we can convert the return parameters to bools so that they can be default initialized.
295
+ if (node.returnParameters.parameters.length > 0) {
296
+ modifications.push(
297
+ makeReplace(
298
+ node.returnParameters,
299
+ orig,
300
+ `(${node.returnParameters.parameters.map(param => toReturnParameterReplacement(param)).join(', ')})`,
301
+ ),
302
+ );
303
+ }
304
+ modifications.push(makeReplace(node.body, orig, '{}'));
305
+ }
264
306
  }
265
307
 
266
308
  break;
@@ -23,6 +23,7 @@ import { getAnnotationArgs as getSupportedAnnotationArgs, getDocumentation } fro
23
23
  import { getStorageLocationAnnotation, isNamespaceSupported } from '../storage/namespace';
24
24
  import { UpgradesError } from '../error';
25
25
  import { assertUnreachable } from '../utils/assert';
26
+ import { logWarning } from '../utils/log';
26
27
 
27
28
  export type ValidationRunData = Record<string, ContractValidation>;
28
29
 
@@ -267,18 +268,37 @@ function checkNamespaceSolidityVersion(source: string, solcVersion?: string, sol
267
268
  function checkNamespacesOutsideContract(source: string, solcOutput: SolcOutput, decodeSrc: SrcDecoder) {
268
269
  for (const node of solcOutput.sources[source].ast.nodes) {
269
270
  if (isNodeType('StructDefinition', node)) {
270
- const storageLocation = getStorageLocationAnnotation(node);
271
- if (storageLocation !== undefined) {
272
- throw new UpgradesError(
273
- `${decodeSrc(node)}: Namespace struct ${node.name} is defined outside of a contract`,
274
- () =>
275
- `Structs with the @custom:storage-location annotation must be defined within a contract. Move the struct definition into a contract, or remove the annotation if the struct is not used for namespaced storage.`,
276
- );
271
+ // Namespace struct outside contract - error
272
+ assertNotNamespace(node, decodeSrc, true);
273
+ } else if (isNodeType('ContractDefinition', node) && node.contractKind === 'library') {
274
+ // Namespace struct in library - warning (don't give an error to avoid breaking changes, since this is quite common)
275
+ for (const child of node.nodes) {
276
+ if (isNodeType('StructDefinition', child)) {
277
+ assertNotNamespace(child, decodeSrc, false);
278
+ }
277
279
  }
278
280
  }
279
281
  }
280
282
  }
281
283
 
284
+ function assertNotNamespace(node: StructDefinition, decodeSrc: SrcDecoder, strict: boolean) {
285
+ const storageLocation = getStorageLocationAnnotation(node);
286
+ if (storageLocation !== undefined) {
287
+ const msg = `${decodeSrc(node)}: Namespace struct ${node.name} is defined outside of a contract`;
288
+ if (strict) {
289
+ throw new UpgradesError(
290
+ msg,
291
+ () =>
292
+ `Structs with the @custom:storage-location annotation must be defined within a contract. Move the struct definition into a contract, or remove the annotation if the struct is not used for namespaced storage.`,
293
+ );
294
+ } else {
295
+ logWarning(msg, [
296
+ 'Structs with the @custom:storage-location annotation must be defined within a contract, otherwise they are not included in storage layout validations. Move the struct definition into a contract, or remove the annotation if the struct is not used for namespaced storage.',
297
+ ]);
298
+ }
299
+ }
300
+ }
301
+
282
302
  function getNamespacedCompilationContext(
283
303
  source: string,
284
304
  contractDef: ContractDefinition,