import { Children, code } from "@alloy-js/core"; import { useJavaNamePolicy } from "../name-policy.js"; import { ModifierProps, Modifiers } from "./Modifiers.jsx"; import { Parameters } from "./Parameters.js"; import { TypeParameters, TypeParametersProps } from "./TypeParameters.jsx"; export interface MethodProps extends ModifierProps, TypeParametersProps { name: string; return?: Children; throws?: Children; parameters?: Record; children?: Children; } export function Method(props: MethodProps) { const params = ; const name = useJavaNamePolicy().getName(props.name, "method"); const modifiers = ; const throwsClause = props.throws ? code` throws ${props.throws}` : ""; const generics = props.generics ? code`${()}${" "}` : ""; const sBody = props.children !== undefined ? code` ${" "}{ ${props.children} } ` : ";"; return code` ${modifiers}${generics}${props.return ?? "void"} ${name}(${params})${throwsClause}${sBody} `; }