Skip to content
15 changes: 10 additions & 5 deletions src/gt4py/next/ffront/foast_to_past.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import dataclasses
from typing import Any, Optional

from gt4py.eve import utils as eve_utils
from gt4py.next.ffront import (
dialect_ast_enums,
foast_to_gtir,
Expand Down Expand Up @@ -99,18 +98,24 @@ def __call__(self, inp: AOT_FOP) -> AOT_PRG:
arg_types, kwarg_types = inp.args.args, inp.args.kwargs

loc = inp.data.foast_node.location
# use a new UID generator to allow caching
param_sym_uids = eve_utils.UIDGenerator()
definition = inp.data.foast_node.type.definition

type_ = inp.data.foast_node.type
params_decl: list[past.Symbol] = [
past.DataSymbol(
id=param_sym_uids.sequential_id(prefix="__sym"),
id=name,
type=arg_type,
namespace=dialect_ast_enums.Namespace.LOCAL,
location=loc,
)
for arg_type in arg_types
for name, arg_type in zip(
[
*definition.pos_only_args,
*definition.pos_or_kw_args.keys(),
*definition.kw_only_args.keys(),
],
arg_types,
)
]
params_ref = [past.Name(id=pdecl.id, location=loc) for pdecl in params_decl]
out_sym: past.Symbol = past.DataSymbol(
Expand Down
Loading