abstract: _isAbstract()

in src/assembler.ts [1898:1922]


        abstract: _isAbstract(symbol, type) || undefined,
        name: symbol.name,
        parameters: parameters.length > 0 ? parameters : undefined,
        protected: _isProtected(symbol) || undefined,
        returns: _isVoid(returnType)
          ? undefined
          : this._optionalValue(returnType, declaration.type ?? declaration.name, 'return type'),
        async: _isPromise(returnType) || undefined,
        static: _isStatic(symbol) || undefined,
        locationInModule: this.declarationLocation(declaration),
      },
      declaration,
    );
    method.variadic = method.parameters?.some((p) => !!p.variadic) === true ? true : undefined;

    this._verifyConsecutiveOptionals(declaration, method.parameters);

    method.docs = this._visitDocumentation(symbol, ctx).docs;

    // If the last parameter is a datatype, verify that it does not share any field names with
    // other function arguments, so that it can be turned into keyword arguments by jsii frontends
    // that support such.
    const lastParamTypeRef = apply(last(parameters), (x) => x.type);
    const lastParamSymbol = last(signature.getParameters());
    if (lastParamTypeRef && spec.isNamedTypeReference(lastParamTypeRef)) {