]> Nishi Git Mirror - gwion.git/commitdiff
:bug:\ Fix\ already\ declared, tl2str
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 19 Jul 2019 15:30:49 +0000 (17:30 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 19 Jul 2019 15:31:04 +0000 (17:31 +0200)
src/parse/scan1.c
src/parse/type_decl.c
tests/nonnull/nonnull2nullable.gw
tests/nonnull/normal_cast_nonnull.gw
tests/nonnull/null_impl_nonnull.gw
tests/nonnull/ref_at_nonnull.gw
tests/nonnull/ref_impl_nonnull.gw

index f64d1401bd53619a578c2e4b5f5014a5fd558eaf..1c2195863f0d080bc32fd96c446782c203da9f02 100644 (file)
@@ -88,7 +88,7 @@ ANN m_bool scan1_exp_decl(const Env env, const Exp_Decl* decl) {
     CHECK_BB(isres(env, var->xid, exp_self(decl)->pos))
     Type t = decl->type;
     const Value former = nspc_lookup_value0(env->curr, var->xid);
-    if(former && !(decl->td->exp || decl->td->xid)&&
+    if(former /* && !(decl->td->exp || decl->td->xid) */&&
         (!env->class_def || !(GET_FLAG(env->class_def, template) || GET_FLAG(env->class_def, scan1))))
       ERR_B(var->pos, _("variable %s has already been defined in the same scope..."),
               s_name(var->xid))
index 5fa7f90c072d81dbd05d88c48713f7295fdffe2f..cd75753ddb571d37adeb68ec16072254c1cb9f69 100644 (file)
@@ -41,59 +41,17 @@ struct td_info {
   GwText text;
 };
 
-ANEW ANN static m_str td2str(const Env env, const Type_Decl* td);
 ANN static m_bool td_info_run(const Env env, struct td_info* info) {
   Type_List tl = info->tl;
   do {
-    DECL_OB(m_str, name, = td2str(env, tl->td))
-    text_add(&info->text, name);
-    free_mstr(env->gwion->mp, name);
+    DECL_OB(const Type,  t, = known_type(env, tl->td))
+    text_add(&info->text, t->name);
     if(tl->next)
       text_add(&info->text, ",");
   } while((tl = tl->next));
   return GW_OK;
 }
 
-ANN static ssize_t id_list_len2(const Nspc nspc, ID_List l) {
-  ssize_t len = 0;
-  do {
-    DECL_OB(const Type, t, = nspc_lookup_type1(nspc, l->xid))
-    len += strlen(t->name);
-  } while((l = l->next) && ++len);
-  return len + 1;
-}
-
-ANN static void type_path2(const Nspc nspc, const m_str str, ID_List l) {
-  m_str s = str;
-  do {
-    const Type t = nspc_lookup_type1(nspc, l->xid);
-    const m_str name = t->name;
-    strcpy(s, name);
-    s += strlen(name);
-    if(l->next)
-      strcpy(s++, ".");
-  }
-  while((l = l->next));
-}
-
-ANEW ANN static m_str td2str(const Env env, const Type_Decl* td) {
-  m_uint depth = td->array ? td->array->depth : 0;
-  DECL_BO(const ssize_t, len, = id_list_len2(env->curr, td->xid)  + depth * 2);
-  const size_t cap = round2szint(len);
-  struct td_info info = { td->types,
-    { (m_str)mp_malloc2(env->gwion->mp, cap), cap, len, env->gwion->mp }
-  };
-  type_path2(env->curr, info.text.str, td->xid);
-  while(depth--) { text_add(&info.text, "[]"); }
-  Type_List tl = td->types;
-  if(tl) {
-    text_add(&info.text, "<");
-    CHECK_BO(td_info_run(env, &info))
-    text_add(&info.text, ">");
-  }
-  return info.text.str;
-}
-
 ANEW ANN m_str tl2str(const Env env, Type_List tl) {
   struct td_info info = { .tl=tl, { .mp=env->gwion->mp} };
   CHECK_BO(td_info_run(env, &info))
index bed60ffebb40a0d4a9ba5a69ddebac6f22a30aeb..e1561f1d4ded6ef5da98d9eb02fa1a32166e7d6d 100644 (file)
@@ -1,2 +1 @@
-#! [contains] can't assign
 Object ! o @=> Object @p;
index da1bbc754ef799fc1ca83051e8fd57e6ab107e5d..9fb6fb4b8e42aa3980c092abf6f45b939c0f2760 100644 (file)
@@ -1,2 +1 @@
-#! [contains] can't cast
 new Object $ Object!;
index b9628cde4521bafdb076f9296a708c21028a4ae5..92a9010f87ef40f6396be0e68f3e579f9e88980f 100644 (file)
@@ -1,3 +1,3 @@
-#! [contains] NullPtrException
+#! [contains] can't implicitly cast
 fun void test(Object !o) { <<< o >>>; }
 null => test;
index 55f5c4478757a5e4dbd374951808878f56565a22..0c8738e3a4c65059441b5af62dd2cb4f3c84b25f 100644 (file)
@@ -1,2 +1,2 @@
 #! [contains] NullPtrException
-Object @o @=> Object !o;
+Object @o @=> Object !p;
index ea07c0b4e01990fa21abe53f8b7f792ecf84ee46..35a7cd7c5ac02bb7efad1a7d318d44b432b426a1 100644 (file)
@@ -1,3 +1,3 @@
-#! [contains] can't implicitly cast
+#! [contains] NullPtrException
 fun void test(Object !o) { <<< o >>>; }
 Object @o => test;