diff --git a/artiq/compiler/embedding.py b/artiq/compiler/embedding.py index 520d33bf4..43aec68e6 100644 --- a/artiq/compiler/embedding.py +++ b/artiq/compiler/embedding.py @@ -947,6 +947,27 @@ class Stitcher: if annot is None: annot = builtins.TNone() + if isinstance(function, SpecializedFunction): + host_function = function.host_function + else: + host_function = function + + embedded_function = host_function.artiq_embedded.function + + if isinstance(embedded_function, str): + embedded_function = host_function + + if isinstance(annot, str): + if annot not in embedded_function.__globals__: + diag = diagnostic.Diagnostic( + "error", + "type annotation for {kind}, {annot}, is not defined", + {"kind": kind, "annot": repr(annot)}, + self._function_loc(function), + notes=self._call_site_note(call_loc, fn_kind)) + self.engine.process(diag) + annot = embedded_function.__globals__[annot] + if not isinstance(annot, types.Type): diag = diagnostic.Diagnostic("error", "type annotation for {kind}, '{annot}', is not an ARTIQ type",