import type { PyNodeBase } from '../base'; import type { PyExpression } from '../expression'; import { PyNodeKind } from '../kinds'; import type { PyStatement } from '../statement'; import type { PyBlock } from '../statements/block'; import { createBlock } from '../statements/block'; import type { PyFunctionParameter } from './functionParameter'; export interface PyFunctionDeclaration extends PyNodeBase { body: PyBlock; decorators?: ReadonlyArray; docstring?: string; kind: PyNodeKind.FunctionDeclaration; modifiers?: ReadonlyArray; name: string; parameters: ReadonlyArray; returnType?: PyExpression; } export function createFunctionDeclaration( name: string, parameters: ReadonlyArray, returnType: PyExpression | undefined, body: ReadonlyArray, decorators?: ReadonlyArray, docstring?: string, modifiers?: ReadonlyArray, leadingComments?: ReadonlyArray, trailingComments?: ReadonlyArray, ): PyFunctionDeclaration { return { body: createBlock(body), decorators, docstring, kind: PyNodeKind.FunctionDeclaration, leadingComments, modifiers, name, parameters, returnType, trailingComments, }; }