Skip to content

Commit

Permalink
feat: allow duplicate registry values (#7988)
Browse files Browse the repository at this point in the history
  • Loading branch information
maribethb authored Apr 1, 2024
1 parent 5a6f22f commit 6767717
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
9 changes: 7 additions & 2 deletions core/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,13 @@ export function register<T>(
// Validate that the given class has all the required properties.
validate(type, registryItem);

// Don't throw an error if opt_allowOverrides is true.
if (!opt_allowOverrides && typeRegistry[caselessName]) {
// Don't throw an error if opt_allowOverrides is true,
// or if we're trying to register the same item.
if (
!opt_allowOverrides &&
typeRegistry[caselessName] &&
typeRegistry[caselessName] !== registryItem
) {
throw Error(
'Name "' +
caselessName +
Expand Down
9 changes: 9 additions & 0 deletions tests/mocha/registry_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,15 @@ suite('Registry', function () {
test('Overwrite a Key', function () {
Blockly.registry.register('test', 'test_name', TestClass);
chai.assert.throws(function () {
// Registers a different object under the same name
Blockly.registry.register('test', 'test_name', {});
}, 'already registered');
});

test('Register a Duplicate Item', function () {
Blockly.registry.register('test', 'test_name', TestClass);
chai.assert.doesNotThrow(function () {
// Registering the same object under the same name is allowed
Blockly.registry.register('test', 'test_name', TestClass);
}, 'already registered');
});
Expand Down

0 comments on commit 6767717

Please sign in to comment.