From: murphy Date: 2007-12-23T09:09:52+09:00 Subject: Racc doesn't play well with yield on Ruby 1.9 hello! another thing that's breaking Rails on Ruby 1.9 is Racc (Ruby parser generator). they are using it like this: def scan_main until eof? ... if s = readstr(@word_re) if @is_mime_header yield :TOKEN, s ... which worked fine with Ruby 1.8. Ruby 1.9 says: TypeError: parse_in() yielded Symbol (must be Array[2]) .../action_mailer/vendor/tmail-1.1.0/tmail/scanner_r.rb:150:in `scan_main' .../action_mailer/vendor/tmail-1.1.0/tmail/scanner_r.rb:127:in `scan' parser.y:375:in `parse_in' racc/parser.rb:152:in `_racc_yyparse_c' racc/parser.rb:152:in `yyparse' parser.y:366:in `parse' parser.y:344:in `parse' .../action_mailer/vendor/tmail-1.1.0/tmail/header.rb:217:in `do_parse' ... I guess the problem is in extract_user_token: (ext/racc/cparse/cparse.c:412) if (TYPE(block_args) != T_ARRAY) { rb_raise(rb_eTypeError, "%s() %s %s (must be Array[2])", you can work around it by making the array implicit: yield [:TOKEN, s] but I hope that's not necessary. [murphy]