From 719dfdf2401d836809d2e431772c84d75471e769 Mon Sep 17 00:00:00 2001 From: Gaith Hallak Date: Fri, 16 Dec 2022 12:33:49 +0300 Subject: [PATCH] Allow data constructors in compile-time constants --- src/aeso_ast_infer_types.erl | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/aeso_ast_infer_types.erl b/src/aeso_ast_infer_types.erl index 0778735..434c764 100644 --- a/src/aeso_ast_infer_types.erl +++ b/src/aeso_ast_infer_types.erl @@ -1971,10 +1971,18 @@ infer_expr(Env = #env{ current_const = CurrentConst }, {app, Ann, Fun, Args0} = infer_op(Env, Ann, Fun, Args, fun infer_infix/1); prefix -> infer_op(Env, Ann, Fun, Args, fun infer_prefix/1); - _ when CurrentConst =/= none -> - type_error({invalid_const_expr, CurrentConst}), - destroy_and_report_type_errors(Env); _ -> + case CurrentConst of + none -> ok; + Id -> + case Fun of + {con, _, _} -> ok; + {qcon, _, _} -> ok; + _ -> + type_error({invalid_const_expr, Id}), + destroy_and_report_type_errors(Env) + end + end, NamedArgsVar = fresh_uvar(Ann), NamedArgs1 = [ infer_named_arg(Env, NamedArgsVar, Arg) || Arg <- NamedArgs ], NewFun0 = infer_expr(Env, Fun),