diff --git a/src/string_with_vars.ml b/src/string_with_vars.ml index 1f8e1648..af5144ed 100644 --- a/src/string_with_vars.ml +++ b/src/string_with_vars.ml @@ -219,6 +219,8 @@ module Var = struct let rename t ~new_name = { t with name = new_name } + + let is_form t = Option.is_some t.payload end let partial_expand diff --git a/src/string_with_vars.mli b/src/string_with_vars.mli index d5c73ddc..7af055d2 100644 --- a/src/string_with_vars.mli +++ b/src/string_with_vars.mli @@ -66,6 +66,8 @@ module Var : sig val to_string : t -> string val rename : t -> new_name:string -> t + + val is_form : t -> bool end val expand diff --git a/src/super_context.ml b/src/super_context.ml index 4b3f3a65..dc0c7a66 100644 --- a/src/super_context.ml +++ b/src/super_context.ml @@ -321,24 +321,18 @@ let find_scope_by_dir t dir = Scope.DB.find_by_dir t.scopes dir let find_scope_by_name t name = Scope.DB.find_by_name t.scopes name let expand_vars t ~syntax_version ~var : Var.Kind.t option = - begin match String_with_vars.Var.destruct var with - | Single _ -> () - | Pair (_, _) -> + if String_with_vars.Var.is_form var then Exn.code_error "expand_vars can't expand forms" - [ "var", String_with_vars.Var.sexp_of_t var - ] - end; - Var.Map.expand t.vars ~syntax_version ~var + [ "var", String_with_vars.Var.sexp_of_t var ] + else + Var.Map.expand t.vars ~syntax_version ~var let expand_form t ~syntax_version ~var = - begin match String_with_vars.Var.destruct var with - | Pair (_, _) -> () - | Single _ -> + if String_with_vars.Var.is_form var then + Var.Map.expand t.forms ~syntax_version ~var + else Exn.code_error "expand_vars can't expand single variables" - [ "var", String_with_vars.Var.sexp_of_t var - ] - end; - Var.Map.expand t.forms ~syntax_version ~var + [ "var", String_with_vars.Var.sexp_of_t var ] let (expand_vars_string, expand_vars_path) = let expand t ~scope ~dir ?(extra_vars=String.Map.empty) s =