diff --git a/lib/pinc_backend/Tag.ml b/lib/pinc_backend/Tag.ml index 74ebe9c..d8239a9 100644 --- a/lib/pinc_backend/Tag.ml +++ b/lib/pinc_backend/Tag.ml @@ -515,27 +515,28 @@ module Tag_Slot = struct let tag = Types.Type_Tag.Tag_Slot - (fun ~tag ~tag_data_provider -> + (fun ~tag ~tag_data_provider ~tag_meta_provider -> let state = State.make ~context:state.context ~mode:state.mode - ~tag_meta:state.tag_meta + ~tag_meta:[] ~root_tag_data_provider:state.root_tag_data_provider ~tag_data_provider ~root_tag_meta_provider:state.root_tag_meta_provider - ~tag_meta_provider:state.root_tag_meta_provider + ~tag_meta_provider state.declarations in - let evaluated = - tag |> DeclarationEvaluator.eval ~eval_expression ~state |> State.get_output - in + let state = tag |> DeclarationEvaluator.eval ~eval_expression ~state in + let output = State.get_output state in + let meta = state.tag_meta in - { - value_loc = Pinc_Diagnostics.Location.none; - value_desc = Value.ComponentTemplateNode (tag, StringMap.empty, evaluated); - }) + ( meta, + { + value_loc = Pinc_Diagnostics.Location.none; + value_desc = Value.ComponentTemplateNode (tag, StringMap.empty, output); + } )) in let meta = state.State.tag_meta_provider ~tag ~key ~attributes ~required in diff --git a/lib/pinc_backend/Types.ml b/lib/pinc_backend/Types.ml index ed4c775..4dc06bb 100644 --- a/lib/pinc_backend/Types.ml +++ b/lib/pinc_backend/Types.ml @@ -105,18 +105,6 @@ end = struct end and Type_Tag : sig - type kind = - | Tag_String - | Tag_Int - | Tag_Float - | Tag_Boolean - | Tag_Array - | Tag_Record - | Tag_Slot of - (tag:string -> tag_data_provider:Type_Tag.data_provider -> Type_Value.value) - | Tag_Store of Type_Store.t - | Tag_Custom of string - type meta = [ `String of string | `Int of int @@ -129,6 +117,21 @@ and Type_Tag : sig | `Errors of string list ] + type kind = + | Tag_String + | Tag_Int + | Tag_Float + | Tag_Boolean + | Tag_Array + | Tag_Record + | Tag_Slot of + (tag:string -> + tag_data_provider:Type_Tag.data_provider -> + tag_meta_provider:Type_Tag.meta_provider -> + (string * Type_Tag.meta) list * Type_Value.value) + | Tag_Store of Type_Store.t + | Tag_Custom of string + type data_provider = tag:kind -> attributes:Type_Value.value StringMap.t ->