From f58b946a2d1c1b9c8fa9701932ca2ee21bd7dd5b Mon Sep 17 00:00:00 2001 From: Hans Bolinder Date: Wed, 5 Feb 2014 08:45:15 +0100 Subject: Fix a bug concerning parameterized types This should fix a problem with variables in parameterized types. In particular it concerns parameterized opaque types and records. --- lib/hipe/cerl/erl_types.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl index 97a135e3ce..7180dd3a2b 100644 --- a/lib/hipe/cerl/erl_types.erl +++ b/lib/hipe/cerl/erl_types.erl @@ -4407,8 +4407,10 @@ build_field_dict([], _TypeNames, _RecDict, _VarDict, Acc) -> get_mod_record([{FieldName, DeclType}|Left1], [{FieldName, ModType}|Left2], Acc) -> - case t_is_var(ModType) orelse t_is_remote(ModType) orelse - t_is_subtype(ModType, DeclType) of + ModTypeNoVars = subst_all_vars_to_any(ModType), + case + t_is_remote(ModTypeNoVars) orelse t_is_subtype(ModTypeNoVars, DeclType) + of false -> {error, FieldName}; true -> get_mod_record(Left1, Left2, [{FieldName, ModType}|Acc]) end; -- cgit v1.2.3