validSyntax.js.flow 962 B

123456789101112131415161718192021222324252627282930313233343536
  1. import _ from 'lodash';
  2. import {
  3. getParameterName,
  4. iterateFunctionNodes,
  5. quoteName,
  6. } from '../utilities';
  7. const schema = [];
  8. const create = iterateFunctionNodes((context) => (functionNode) => {
  9. for (const identifierNode of functionNode.params) {
  10. const nodeType = _.get(identifierNode, 'type');
  11. const isAssignmentPattern = nodeType === 'AssignmentPattern';
  12. const hasTypeAnnotation = Boolean(_.get(identifierNode, 'typeAnnotation'));
  13. const leftAnnotated = Boolean(_.get(identifierNode, 'left.typeAnnotation'));
  14. if (isAssignmentPattern && hasTypeAnnotation && !leftAnnotated) {
  15. context.report({
  16. data: {
  17. name: quoteName(getParameterName(identifierNode, context)),
  18. },
  19. message: '{{name}}parameter type annotation must be placed on left-hand side of assignment.',
  20. node: identifierNode,
  21. });
  22. }
  23. }
  24. });
  25. export default {
  26. create,
  27. meta: {
  28. deprecated: true,
  29. },
  30. schema,
  31. };