山本です。

rb_attr_get でも警告が出る場合があるようですが、これは意図された動作でしょうか。

Index: variable.c
===================================================================
RCS file: /src/ruby/variable.c,v
retrieving revision 1.120
diff -u -w -b -p -r1.120 variable.c
--- variable.c	4 Mar 2005 06:47:41 -0000	1.120
+++ variable.c	10 Apr 2005 07:15:26 -0000
@@ -842,9 +842,10 @@ rb_generic_ivar_table(obj)
 }
 
 static VALUE
-generic_ivar_get(obj, id)
+generic_ivar_get(obj, id, warn)
     VALUE obj;
     ID id;
+    int warn;
 {
     st_table *tbl;
     VALUE val;
@@ -857,7 +858,10 @@ generic_ivar_get(obj, id)
       }
     }
 
+    if (warn && ruby_verbose) {
     rb_warning("instance variable %s not initialized", rb_id2name(id));
+    }
+
     return Qnil;
 }
 
@@ -1011,7 +1015,7 @@ ivar_get(obj, id, warn)
 	break;
       default:
 	if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj))
-	    return generic_ivar_get(obj, id);
+	    return generic_ivar_get(obj, id, warn);
 	break;
     }
     if (warn && ruby_verbose) {