diff --git a/src/handlers/__tests__/displayNameHandler-test.js b/src/handlers/__tests__/displayNameHandler-test.js index 84174267979..74a693e4343 100644 --- a/src/handlers/__tests__/displayNameHandler-test.js +++ b/src/handlers/__tests__/displayNameHandler-test.js @@ -223,5 +223,14 @@ describe('defaultPropsHandler', () => { expect(() => displayNameHandler(documentation, definition)).not.toThrow(); expect(documentation.displayName).toBe('Bar'); }); + + it('ignores assignment to non-literal/identifier', () => { + const definition = statement('Foo.Bar = () => {};').get( + 'expression', + 'right', + ); + expect(() => displayNameHandler(documentation, definition)).not.toThrow(); + expect(documentation.displayName).not.toBeDefined(); + }); }); }); diff --git a/src/handlers/displayNameHandler.js b/src/handlers/displayNameHandler.js index 3304aa8a0eb..7e36841b63e 100644 --- a/src/handlers/displayNameHandler.js +++ b/src/handlers/displayNameHandler.js @@ -48,11 +48,14 @@ export default function displayNameHandler( ); return; } else if (types.AssignmentExpression.check(currentPath.parent.node)) { - documentation.set( - 'displayName', - getNameOrValue(currentPath.parent.get('left')), - ); - return; + const leftPath = currentPath.parent.get('left'); + if ( + types.Identifier.check(leftPath.node) || + types.Literal.check(leftPath.node) + ) { + documentation.set('displayName', getNameOrValue(leftPath)); + return; + } } currentPath = currentPath.parent; }