]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve exp location
authorfennecdjay <fennecdjay@gwion.tk>
Thu, 12 Nov 2020 18:28:44 +0000 (19:28 +0100)
committerfennecdjay <fennecdjay@gwion.tk>
Thu, 12 Nov 2020 18:28:44 +0000 (19:28 +0100)
ast
src/emit/emit.c
src/import/import_udef.c
src/lib/object_op.c

diff --git a/ast b/ast
index 43c1eb04340b41b4ddb44deb0322d4e4f62a2969..668bf4463056cd0fb19e9f66c8ba60f9d5d8275b 160000 (submodule)
--- a/ast
+++ b/ast
@@ -1 +1 @@
-Subproject commit 43c1eb04340b41b4ddb44deb0322d4e4f62a2969
+Subproject commit 668bf4463056cd0fb19e9f66c8ba60f9d5d8275b
index 0888cf66e5217915702441e3bd54606b8e6b0a5c..add8932de6e57ed705c28b35dbef680ccc16d729 100644 (file)
@@ -1710,7 +1710,7 @@ ANN static m_bool emit_union_def(const Emitter emit, const Union_Def udef) {
     type_decl->flag = udef->flag;
     const Var_Decl var_decl = new_var_decl(emit->gwion->mp, udef->xid, NULL, loc_cpy(emit->gwion->mp, udef->pos));
     const Var_Decl_List var_decl_list = new_var_decl_list(emit->gwion->mp, var_decl, NULL);
-    const Exp exp = new_exp_decl(emit->gwion->mp, type_decl, var_decl_list);
+    const Exp exp = new_exp_decl(emit->gwion->mp, type_decl, var_decl_list, loc_cpy(emit->gwion->mp, udef->pos));
     exp->d.exp_decl.type = udef->value->type;
     var_decl->value = udef->value;
     const m_bool ret = emit_exp_decl(emit, &exp->d.exp_decl);
index aaa603ff69ec412d3a555173a96a864daa9a139d..8c58aa227242c102fa78a35d570a35dfde789ac8 100644 (file)
@@ -19,7 +19,7 @@ ANN Exp make_exp(const Gwi gwi, const m_str type, const m_str name) {
   DECL_OO(Type_Decl*, td, = gwi_str2decl(gwi, type))
   const Var_Decl_List vlist = gwi_str2varlist(gwi, name);
   if(vlist)
-    return new_exp_decl(gwi->gwion->mp, td, vlist);
+    return new_exp_decl(gwi->gwion->mp, td, vlist, loc(gwi));
   free_type_decl(gwi->gwion->mp, td);
   return NULL;
 }
index 18545e9e84151ba978cf3e086f68c389716a8c14..4b7f7111fd936a754d83972f9e7f6aeb8abf1ab7 100644 (file)
@@ -407,7 +407,7 @@ ANN static inline Symbol dot_symbol(SymTable *st, const Value v) {
 ANN Exp symbol_owned_exp(const Gwion gwion, const Symbol *data) {
   const Value v = prim_self(data)->value;
   const Exp base = new_prim_id(gwion->mp, dot_symbol(gwion->st, v), loc_cpy(gwion->mp, prim_pos(data)));
-  const Exp dot = new_exp_dot(gwion->mp, base, *data);
+  const Exp dot = new_exp_dot(gwion->mp, base, *data, loc_cpy(gwion->mp, prim_pos(data)));
   const Type owner = v->from->owner_class;
   dot->d.exp_dot.t_base = dot->d.exp_dot.base->info->type = !GET_FLAG(v, static) ?
     owner : type_class(gwion, owner);