Example #1
0
export function getConstructorClassMethod(astNode: babel.Class):
    babel.ClassMethod|undefined {
  for (const member of astNode.body.body) {
    if (babel.isClassMethod(member) && member.kind === 'constructor') {
      return member;
    }
  }
}
Example #2
0
function* _getMethods(node: babel.Node) {
  if (!babel.isClassDeclaration(node) && !babel.isClassExpression(node)) {
    return;
  }
  for (const statement of node.body.body) {
    if (babel.isClassMethod(statement) && statement.kind === 'method') {
      yield statement;
    }
  }
}
Example #3
0
export function extractPropertyFromGetterOrSetter(
    method: babel.ClassMethod|babel.ObjectMethod,
    jsdocAnn: jsdoc.Annotation|undefined,
    document: JavaScriptDocument): ScannedProperty|null {
  // TODO(43081j): remove this when static properties are supported
  if (babel.isClassMethod(method) && method.static) {
    return null;
  }

  if (method.kind !== 'get' && method.kind !== 'set') {
    return null;
  }

  // TODO(43081j): use getPropertyName, see
  // https://github.com/Polymer/polymer-analyzer/pull/867
  const name = getPropertyName(method);
  if (name === undefined) {
    return null;
  }

  let type;
  let description;
  let privacy: Privacy = 'public';
  let readOnly = false;

  if (jsdocAnn) {
    const ret = getReturnFromAnnotation(jsdocAnn);
    type = ret ? ret.type : undefined;
    description = jsdoc.getDescription(jsdocAnn);
    privacy = getOrInferPrivacy(name, jsdocAnn);
    readOnly = jsdoc.hasTag(jsdocAnn, 'readonly');
  }

  return {
    name,
    astNode: {language: 'js', node: method, containingDocument: document},
    type,
    jsdoc: jsdocAnn,
    sourceRange: document.sourceRangeForNode(method)!,
    description,
    privacy,
    warnings: [],
    readOnly,
  };
}
Example #4
0
 (n) => babel.isClassMethod(n) && n.static === true &&
     n.kind === 'get' && getIdentifierName(n.key) === name) as