[#33732] 文字列の式展開について — Masao Mutoh <mutoh@...>

むとうです。

14 messages 2002/02/03
[#33733] Re: 文字列の式展開について — Tietew <tietew-ml-ruby-list@...> 2002/02/03

[#33745] Re: 文字列の式展開について — Masao Mutoh <mutoh@...> 2002/02/04

むとうです。

[#33746] Re: 文字列の式展開について — Take_tk <ggb03124@...> 2002/02/04

たけ(tk)です。

[#33762] WebDAV client — HIDAKA Takahiro <cv8t-hdk@...>

 ひだかです。

15 messages 2002/02/05

[#33793] 右辺の値なしでも実行可能? — "井上 浩一" <kyoui32@...>

井上です。

48 messages 2002/02/08
[#33794] Re: 右辺の値なしでも実行可能? — Tietew <tietew-ml-ruby-list@...> 2002/02/08

[#33797] 変数の宣言 — Yasuhiro Hayase <hayase@...> 2002/02/08

早瀬@大阪大学基礎工学部情報科学科 です。

[#33798] Re: 変数の宣言 — matz@... (Yukihiro Matsumoto) 2002/02/08

まつもと ゆきひろです

[#33839] Re: 変数の宣言 — Yasuhiro Hayase <hayase@...> 2002/02/11

早瀬@阪大です。

[#33840] Re: 変数の宣言 — Tanaka Akira <akr@...17n.org> 2002/02/11

In article <20020211224442.48d0e668.hayase@hcn.zaq.ne.jp>,

[#33841] Re: 変数の宣言 — nobu.nakada@... 2002/02/11

なかだです。

[#33845] Re: 変数の宣言 — shudo@... 2002/02/12

> > > あえて宣言文の途中で、代入前に変数の値を使った場合にエラーを出そうと思うと、

[#33847] スクリプト言語 (Re: 変数の宣言 ) — TAKAHASHI Masayoshi <maki@...> 2002/02/12

高橋征義です。

[#33850] Re: スクリプト言語 (Re: 変数の宣言 ) — Takaaki Tateishi <ttate@...> 2002/02/12

At Tue, 12 Feb 2002 13:27:58 +0900,

[#33871] Re: スクリプト言語 (Re: 変数の宣言 ) — TAKAHASHI Masayoshi <maki@...> 2002/02/12

Takaaki Tateishi <ttate@kt.jaist.ac.jp> wrote:

[#33795] Re: 右辺の値なしでも実行可能? — "井上 浩一" <kyoui32@...>

井上です。

13 messages 2002/02/08

[#33807] Re: 右辺の値なしでも実行可能? — "井上 浩一" <kyoui32@...>

井上です。

38 messages 2002/02/08
[#33824] Re: 右辺の値なしでも実行可能? — "jihg" <jihg@...> 2002/02/08

jihg です。新入りです。

[#33825] Re: 右辺の値なしでも実行可能? — Tanaka Akira <akr@...17n.org> 2002/02/08

In article <000001c1b0c1$04eca980$b7d08bcb@soteccomputer>,

[#33831] Re: 右辺の値なしでも実行可能? — "jihg" <jihg@...> 2002/02/09

> Pseudo-Simplicity(擬似単純性)

[#33853] arguments for def [Re: 右辺の値なしでも実行可能? ] — Masaaki Sakano <mas@...> 2002/02/12

坂野 正明と申します。

[#33856] Re: arguments for def [Re: 右辺の値なしでも実行可能? ] — shukaku@... 2002/02/12

At Tue, 12 Feb 2002 19:14:03 +0900,

[#33867] Re: arguments for def [Re: 右辺の値なしでも実行可能? ] — Masaaki Sakano <mas@...> 2002/02/12

坂野 正明です。

[#33846] quickml サーバ — Satoru Takabayashi <satoru@...>

高林と申します

22 messages 2002/02/12
[#34082] SlowML /Re: quickml サーバ — rubiben <ozaki@...> 2002/02/25

るびべん です:

[#34086] Re: SlowML /Re: quickml サーバ — matz@... (Yukihiro Matsumoto) 2002/02/26

まつもと ゆきひろです

[#34100] Re: SlowML /Re: quickml サーバ — rubiben <ozaki@...> 2002/02/27

るびべん です:

[#34117] SlowML 実装実験 /Re: quickml サーバ — rubiben <ozaki@...> 2002/02/27

るびべん です:

[#33966] 「たまてばこ」開発版が SecurityE rror — dellin <dellin@...>

dellinといいます。

17 messages 2002/02/18
[#33968] Re: 「たまてばこ」開発版が SecurityError — nobu.nakada@... 2002/02/18

なかだです。

[#33972] world writeable dir (Re: 「たまてばこ」開発版が SecurityError) — Kazuhiro NISHIYAMA <zn@...> 2002/02/18

西山和広です。

[#34053] 漢数字 -> 数 — TOYOFUKU Chikanobu <toyofuku@...>

豊福です。

18 messages 2002/02/25

[#34056] ruby-dev summary — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

16 messages 2002/02/25

[ruby-list:33937] Re: 変数の宣言

From: nobu.nakada@...
Date: 2002-02-15 11:28:34 UTC
List: ruby-list #33937
なかだです。

At Mon, 11 Feb 2002 22:59:48 +0900,
Tanaka Akira <akr@m17n.org> wrote:
> ちなみに、Java では初期化されていない可能性がある変数を参照することを
> 禁止しています。Definite Assignment というやつですが、このようなことに
> 興味を持つなら言語仕様を読んでみるとおもしろいかも知れません。

Rubyでは、selfのメソッドとローカル変数に見掛け上違いがないので
そういうわけにはいきませんが、若干の静的なチェックを考えてみま
した。メソッドとローカル変数を同じ名前にするのは間違いの可能性
が高いのでは、ということです。

$ ./miniruby -wc -e a -e a=a
-e:2: warning: `a' may be uninitialized at line 1
Syntax OK


Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.153
diff -u -2 -p -r1.153 parse.y
--- parse.y	2002/02/14 08:47:58	1.153
+++ parse.y	2002/02/15 10:29:44
@@ -4284,4 +4284,13 @@ match_gen(node1, node2)
 }
 
+static struct local_vars {
+    ID *tbl;
+    int nofree;
+    int cnt;
+    int dlev;
+    struct local_vars *prev;
+    struct st_table *vcall;
+} *lvtbl;
+
 static NODE*
 gettable(id)
@@ -4315,4 +4324,8 @@ gettable(id)
 		rb_id2name(id), rb_id2name(id));
 #endif
+	if (ruby_verbose) {
+	    if (!lvtbl->vcall) lvtbl->vcall = st_init_numtable();
+	    st_insert(lvtbl->vcall, id, (char *)ruby_sourceline);
+	}
 	return NEW_VCALL(id);
     }
@@ -4358,4 +4371,11 @@ assignable(id, val)
     }
     else if (is_local_id(id)) {
+	if (lvtbl->vcall) {
+	    char *line;
+	    if (st_lookup(lvtbl->vcall, id, &line)) {
+		rb_warning("`%s' may be uninitialized at line %d",
+			   rb_id2name(id), (int)line);
+	    }
+	}
 	if (rb_dvar_curr(id)) {
 	    return NEW_DASGN_CURR(id, val);
@@ -4887,12 +4907,4 @@ new_super(a)
 }
 
-static struct local_vars {
-    ID *tbl;
-    int nofree;
-    int cnt;
-    int dlev;
-    struct local_vars *prev;
-} *lvtbl;
-
 static void
 local_push()
@@ -4906,4 +4918,5 @@ local_push()
     local->tbl = 0;
     local->dlev = 0;
+    local->vcall = 0;
     lvtbl = local;
 }
@@ -4918,4 +4931,5 @@ local_pop()
 	else lvtbl->tbl[0] = lvtbl->cnt;
     }
+    if (lvtbl->vcall) st_free_table(lvtbl->vcall);
     free(lvtbl);
     lvtbl = local;


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread