]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve name mangling
authorJérémie Astor <fennecdjay@gmail.com>
Sun, 27 Jun 2021 23:12:15 +0000 (01:12 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Sun, 27 Jun 2021 23:12:15 +0000 (01:12 +0200)
src/emit/emit.c
src/vm/vm_name.c

index b1c8f71e2b4f3b0fbd644dd086f88a704631d89d..c254727ddb2fa0b5fab39bf4c052d3490be7f612 100644 (file)
@@ -2508,11 +2508,8 @@ ANN static inline void emit_func_def_fglobal(const Emitter emit,
   set_mem->m_val2     = (m_uint)value->d.func_ref->code;
 }
 
-ANN static void emit_func_def_init(const Emitter emit, const Func func) {
-  const Type t = emit->env->class_def;
-  char       c[(t ? strlen(t->name) + 1 : 0) + strlen(func->name) + 6];
-  sprintf(c, "%s%s%s(...)", t ? t->name : "", t ? "." : "", func->name);
-  emit_push_code(emit, c);
+ANN static inline void emit_func_def_init(const Emitter emit, const Func func) {
+  emit_push_code(emit, func->name);
 }
 
 ANN static void emit_func_def_args(const Emitter emit, Arg_List a) {
index 49b9c931d295bdd1ff8a3f4f2df823484937fe2b..8142280e600a7e9483ecc4b31e3010406a82ced8 100644 (file)
@@ -2,6 +2,11 @@
 #include "gwion_ast.h"
 
 m_str code_name_set(MemPool p, const m_str name, const m_str file) {
+  const m_str search  = strrchr(name, '@');
+  const m_str is_file = search ? search + 1 : name;
+  if(!strcmp(is_file, file)) {
+    return mstrdup(p, name);
+  }
   const size_t len = strlen(name) + strlen(file) + 2;
   const m_str  str = (const m_str)_mp_malloc(p, len);
   sprintf(str, "%s$%s", name, file);