[#15841] abstract method — Tanaka Akira <akr@...17n.org>
最近、abstract method が欲しくなり、次のようなものを書きました。
[#15846] Ruby M17N request — "K.Kosako" <kosako@...>
今書いているライブラリを、あらかじめRuby M17Nに対応させておこうとして、
まつもと ゆきひろです
Yukihiro Matsumotoさんの<1012831868.125952.28017.nullmailer@ev.netlab.jp>から
<20020205045749.0AAA015B@helium.ruby-lang.org>から
At Mon, 25 Feb 2002 19:57:05 +0900,
At Mon, 25 Feb 2002 21:00:46 +0900,
まつもと ゆきひろです
まつもと ゆきひろです
Yukihiro Matsumotoさんの<1014656883.878972.23459.nullmailer@ev.netlab.jp>から
At Mon, 25 Feb 2002 19:57:05 +0900,
At Sun, 3 Mar 2002 07:15:40 +0900,
まつもと ゆきひろです
Yukihiro Matsumotoさんの<1015574625.778743.29060.nullmailer@ev.netlab.jp>から
まつもと ゆきひろです
なかだです。
nobu.nakada@nifty.ne.jpさんの
なかだです。
nobu.nakada@nifty.ne.jpさんの
なかだです。
なかだです。
nobu.nakada@nifty.ne.jpさんの
あおきです。
なかだです。
[#15855] Re: [ruby-cvs] ruby: * io.c (fptr_finalize): should raise error when fclose fails. — nobu.nakada@...
なかだです。
[#15861] syscall — nobu.nakada@...
なかだです。
西山和広です。
なかだです。
In article <200202091509.g19F9mO16072@sharui.nakada.kanuma.tochigi.jp>,
まつもと ゆきひろです
なかだです。
[#15867] [BUG?] include after module definition and extend module — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
In article <1014021831.527593.5892.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1014100898.366150.14204.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1014126659.698034.15364.nullmailer@ev.netlab.jp>,
[#15903] -L option in extmk.rb — nobu.nakada@...
なかだです。
[#15914] making net/*.rb grok URI — "Akinori MUSHA" <knu@...>
net/*.rb モジュール群をぜひとも標準添付となった URI クラスに
At Mon, 18 Feb 2002 04:33:42 +0900,
あおきです。
At Mon, 18 Feb 2002 15:24:22 +0900,
あおきです。
高橋征義です。
In article <200202190432.NAA18796@mx.inac.co.jp>,
高橋征義です。
In article <20020221020159R.maki@rubycolor.org>,
なかだです。
In article <200202202350.g1KNoc731179@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200202210553.g1L5rk713061@sharui.nakada.kanuma.tochigi.jp>,
まつもと ゆきひろです
In article <1014277711.428770.25909.nullmailer@ev.netlab.jp>,
[#15918] win32 方面 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#15988] Re: [rubyist:1097] Re: % 記法 — nobu.nakada@...
なかだです。
なかだです。
西山和広です。
まつもと ゆきひろです
なかだです。
[#15994] subdir in mkmf.rb — nobu.nakada@...
なかだです。
[#16040] Digest::MD5 SEGV (ruby_1_6) — m_seki@...
[#16049] defined? autoload constant — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
なかだです。
けいじゅ@日本ラショナルソフトウェアです.
なかだです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#16050] ParseDate.to_time — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#16059] New Struct — Shin-ichiro HARA <sinara@...>
原です。
[#16068] UNIXSocket#{send_io,recv_io} — Tanaka Akira <akr@...17n.org>
しばらく前にふと気が向いて UNIXSocket#{send_io,recv_io} というものをでっ
まつもと ゆきひろです
In article <1014700933.711454.28068.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
[#16082] Array#select without block — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
[#16102] No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。どうせ一年も先の話なのでのんびりと。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
まつもと ゆきひろです
なひです。
[#16112] ruby 1.6.7 preview 1 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#16126] patch for gdbm, dbm and sdbm — Koji Arai <JCA02266@...>
新井です。
[#16134] Defining (Python) Source Code Encoding — TAKAHASHI Masayoshi <maki@...>
高橋征義です。ruby-list の「localized document」ともやや関係あり?
新井です。
なかだです。
[#16138] Hash implementation — MORITA Naoyuki <naohaq@...>
はじめまして、森田と申すものです。
[#16145] ruby 1.6.7 (2002-02-27)/marshal data too short (ArgumentError) — m_seki@...
[ruby-dev:15905] [PATCH] value_expr warnings
なかだです。
ifの式に対する警告が、対応するendの行になるのは分かりにくいと思
います。
$ ruby -wc
if while false
end
end # ここになる
-:3: warning: void value expression
Syntax OK
それと、代入で同じ警告が二回出ます。node_assign()やassignable()
のrhsはほとんどがvalue_expr()済みのようですし、多重代入のほうも
mrhsの時点でvoidでないはずなのでは。
$ ruby -wc
a = while false; end
-:1: warning: void value expression
-:1: warning: void value expression
Syntax OK
$ ruby -wc
a, b = while false; end
-:1: warning: void value expression
-:1: warning: void value expression
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/17 00:33:28
@@ -510,5 +510,4 @@ stmt : kALIAS fitem {lex_state = EXPR_F
| mlhs '=' mrhs
{
- value_expr($3);
$1->nd_value = $3;
$$ = $1;
@@ -1353,44 +1352,39 @@ primary : literal
fixpos($$, $1);
}
- | kIF expr then
+ | kIF expr {value_expr($2);} then
compstmt
if_tail
kEND
{
- value_expr($2);
- $$ = NEW_IF(cond($2), $4, $5);
+ $$ = NEW_IF(cond($2), $5, $6);
fixpos($$, $2);
}
- | kUNLESS expr then
+ | kUNLESS expr {value_expr($2);} then
compstmt
opt_else
kEND
{
- value_expr($2);
- $$ = NEW_UNLESS(cond($2), $4, $5);
+ $$ = NEW_UNLESS(cond($2), $5, $6);
fixpos($$, $2);
}
- | kWHILE {COND_PUSH(1);} expr do {COND_POP();}
+ | kWHILE {COND_PUSH(1);} expr {COND_POP(); value_expr($3);} do
compstmt
kEND
{
- value_expr($3);
$$ = NEW_WHILE(cond($3), $6, 1);
fixpos($$, $3);
}
- | kUNTIL {COND_PUSH(1);} expr do {COND_POP();}
+ | kUNTIL {COND_PUSH(1);} expr {COND_POP(); value_expr($3);} do
compstmt
kEND
{
- value_expr($3);
$$ = NEW_UNTIL(cond($3), $6, 1);
fixpos($$, $3);
}
- | kCASE expr opt_terms
+ | kCASE expr {value_expr($2);} opt_terms
case_body
kEND
{
- value_expr($2);
- $$ = NEW_CASE($2, $4);
+ $$ = NEW_CASE($2, $5);
fixpos($$, $2);
}
@@ -1399,9 +1393,8 @@ primary : literal
$$ = $3;
}
- | kFOR block_var kIN {COND_PUSH(1);} expr do {COND_POP();}
+ | kFOR block_var kIN {COND_PUSH(1);} expr {COND_POP(); value_expr($5);} do
compstmt
kEND
{
- value_expr($5);
$$ = NEW_FOR($2, $5, $8);
fixpos($$, $2);
@@ -1492,7 +1485,6 @@ primary : literal
cur_mid = $<id>3;
}
- | kDEF singleton dot_or_colon {lex_state = EXPR_FNAME;} fname
+ | kDEF singleton dot_or_colon {lex_state = EXPR_FNAME; value_expr($2);} fname
{
- value_expr($2);
in_single++;
local_push();
@@ -1543,10 +1535,9 @@ do : term
if_tail : opt_else
- | kELSIF expr then
+ | kELSIF expr {value_expr($2);} then
compstmt
if_tail
{
- value_expr($2);
- $$ = NEW_IF(cond($2), $4, $5);
+ $$ = NEW_IF(cond($2), $5, $6);
fixpos($$, $2);
}
@@ -1905,4 +1896,5 @@ f_opt : tIDENTIFIER '=' arg
else if (local_id($1))
yyerror("duplicate optional argument name");
+ value_expr($3);
$$ = assignable($1, $3);
}
@@ -4310,9 +4302,4 @@ gettable(id)
if (local_id(id)) return NEW_LVAR(id);
/* method call without arguments */
-#if 0
- /* Rite will warn this */
- rb_warn("ambiguous identifier; %s() or self.%s is better for method call",
- rb_id2name(id), rb_id2name(id));
-#endif
return NEW_VCALL(id);
}
@@ -4338,5 +4325,4 @@ assignable(id, val)
NODE *val;
{
- value_expr(val);
if (id == kSELF) {
yyerror("Can't change the value of self");
@@ -4464,5 +4450,4 @@ node_assign(lhs, rhs)
if (!lhs) return 0;
- value_expr(rhs);
switch (nd_type(lhs)) {
case NODE_GASGN:
@@ -4498,4 +4483,13 @@ value_expr(node)
switch (nd_type(node)) {
+ case NODE_VCALL:
+ /* Rite will warn this always */
+ {
+ char *name = rb_id2name(node->nd_mid);
+ rb_warning("ambiguous identifier; %s() or self.%s is better for method call",
+ name, name);
+ }
+ return Qfalse;
+
case NODE_WHILE:
case NODE_UNTIL:
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦