Skip to content

Commit

Permalink
fix generic formal bug (#4087)
Browse files Browse the repository at this point in the history
Signed-off-by: Jade Abraham <[email protected]>
  • Loading branch information
jabraham17 authored Feb 11, 2025
1 parent 04e541e commit 78daa17
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions src/registry/register_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,23 @@
"bigint": "bigint",
}

class formalKind(Enum):
ARRAY = 1
LIST = 2
BORROWED_CLASS = 3
HOMOG_TUPLE = 4
SCALAR = 5

# type and variable names from arkouda infrastructure that could conceivable be changed in the future:
ARGS_FORMAL_INTENT = "<default-intent>"
ARGS_FORMAL_NAME = "msgArgs"
ARGS_FORMAL_TYPE = "MessageArgs"
ARGS_FORMAL_KIND = formalKind.BORROWED_CLASS

SYMTAB_FORMAL_INTENT = "<default-intent>"
SYMTAB_FORMAL_NAME = "st"
SYMTAB_FORMAL_TYPE = "SymTab"
SYMTAB_FORMAL_KIND = formalKind.BORROWED_CLASS

ARRAY_ENTRY_CLASS_NAME = "SymEntry"

Expand Down Expand Up @@ -130,14 +139,6 @@ def __str__(self):
return f"static: '{self.value}'"


class formalKind(Enum):
ARRAY = 1
LIST = 2
BORROWED_CLASS = 3
HOMOG_TUPLE = 4
SCALAR = 5


class FormalTypeSpec:
def __init__(self, kind, name, storage_kind, type_str=None, info=None):
self.kind = kind
Expand Down Expand Up @@ -706,13 +707,19 @@ def gen_signature(user_proc_name, generic_args=None):
Return the signature and the name of the procedure
"""
args_formal_kind = "borrowed" if ARGS_FORMAL_KIND == formalKind.BORROWED_CLASS else ''
args_formal_type = f"{args_formal_kind} {ARGS_FORMAL_TYPE}"
symtab_formal_kind = "borrowed" if SYMTAB_FORMAL_KIND == formalKind.BORROWED_CLASS else ''
symtab_formal_type = f"{symtab_formal_kind} {SYMTAB_FORMAL_TYPE}"

cmd_plus_args_plus_symtab = f"cmd: string, {ARGS_FORMAL_NAME}: {args_formal_type}, {SYMTAB_FORMAL_NAME}: {symtab_formal_type}"
if generic_args:
name = "ark_reg_" + user_proc_name + "_generic"
arg_strings = [formal_spec.stringify() for formal_spec in generic_args]
proc = f"proc {name}(cmd: string, {ARGS_FORMAL_NAME}: {ARGS_FORMAL_TYPE}, {SYMTAB_FORMAL_NAME}: {SYMTAB_FORMAL_TYPE}, {', '.join(arg_strings)}): {RESPONSE_TYPE_NAME} throws {'{'}"
proc = f"proc {name}({cmd_plus_args_plus_symtab}, {', '.join(arg_strings)}): {RESPONSE_TYPE_NAME} throws {'{'}"
else:
name = "ark_reg_" + user_proc_name
proc = f"proc {name}(cmd: string, {ARGS_FORMAL_NAME}: {ARGS_FORMAL_TYPE}, {SYMTAB_FORMAL_NAME}: {SYMTAB_FORMAL_TYPE}): {RESPONSE_TYPE_NAME} throws {'{'}"
proc = f"proc {name}({cmd_plus_args_plus_symtab}): {RESPONSE_TYPE_NAME} throws {'{'}"
return (proc, name)


Expand Down

0 comments on commit 78daa17

Please sign in to comment.