[前][次][番号順一覧][スレッド一覧]

ruby-changes:73480

From: Nobuyoshi <ko1@a...>
Date: Thu, 8 Sep 2022 19:09:53 +0900 (JST)
Subject: [ruby-changes:73480] bcf82b7c26 (master): Process token IDs from id.def without id.h

https://git.ruby-lang.org/ruby.git/commit/?id=bcf82b7c26

From bcf82b7c26a88a2521715a38990f0ab081001190 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Thu, 8 Sep 2022 15:36:04 +0900
Subject: Process token IDs from id.def without id.h

Fixes id.h error during updating ripper.c by `make after-update`.

While it used to update id.h in the build directory, but was trying to
update ripper.c in the source directory.  In principle, files in the
source directory can or should not depend on files in the build
directory.
---
 common.mk         |  4 ++--
 ext/ripper/depend |  5 ++---
 tool/id2token.rb  | 11 ++++-------
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/common.mk b/common.mk
index f86bf3ff78..1385db9a49 100644
--- a/common.mk
+++ b/common.mk
@@ -933,7 +933,7 @@ PHONY: https://github.com/ruby/ruby/blob/trunk/common.mk#L933
 
 {$(srcdir)}.y.c:
 	$(ECHO) generating $@
-	$(Q)$(BASERUBY) $(tooldir)/id2token.rb --path-separator=.$(PATH_SEPARATOR)./ --vpath=$(VPATH) id.h $(SRC_FILE) > parse.tmp.y
+	$(Q)$(BASERUBY) $(tooldir)/id2token.rb $(SRC_FILE) > parse.tmp.y
 	$(Q)$(BASERUBY) $(tooldir)/pure_parser.rb parse.tmp.y $(YACC)
 	$(Q)$(RM) parse.tmp.y.bak
 	$(Q)$(YACC) -d $(YFLAGS) -o y.tab.c parse.tmp.y
@@ -1219,7 +1219,7 @@ revision.$(HAVE_BASERUBY:yes=tmp):: $(srcdir)/version.h $(tooldir)/file2lastrev. https://github.com/ruby/ruby/blob/trunk/common.mk#L1219
 $(REVISION_H): revision.tmp
 	$(Q)$(IFCHANGE) "--timestamp=$@" "$(srcdir)/revision.h" revision.tmp
 
-$(srcdir)/ext/ripper/ripper.c: $(srcdir)/ext/ripper/tools/preproc.rb $(srcdir)/parse.y id.h $(srcdir)/ext/ripper/depend
+$(srcdir)/ext/ripper/ripper.c: $(srcdir)/ext/ripper/tools/preproc.rb $(srcdir)/parse.y $(srcdir)/defs/id.def $(srcdir)/ext/ripper/depend
 	$(ECHO) generating $@
 	$(Q) $(CHDIR) $(@D) && \
 	sed -e 's/{\$$([^(){}]*)[^{}]*}//g' -e /AUTOGENERATED/q depend | \
diff --git a/ext/ripper/depend b/ext/ripper/depend
index 80a6d62346..15c557a8ef 100644
--- a/ext/ripper/depend
+++ b/ext/ripper/depend
@@ -17,10 +17,9 @@ ripper.o: ripper.c https://github.com/ruby/ruby/blob/trunk/ext/ripper/depend#L17
 all: check
 static: check
 
-ripper.y: $(srcdir)/tools/preproc.rb $(srcdir)/tools/dsl.rb $(top_srcdir)/parse.y {$(VPATH)}id.h
+ripper.y: $(srcdir)/tools/preproc.rb $(srcdir)/tools/dsl.rb $(top_srcdir)/parse.y $(top_srcdir)/defs/id.def
 	$(ECHO) extracting $@ from $(top_srcdir)/parse.y
-	$(Q) $(RUBY) $(top_srcdir)/tool/id2token.rb --path-separator=.$(PATH_SEPARATOR)./ \
-		--vpath=$(VPATH)$(PATH_SEPARATOR)$(top_srcdir) id.h $(top_srcdir)/parse.y > ripper.tmp.y
+	$(Q) $(RUBY) $(top_srcdir)/tool/id2token.rb $(top_srcdir)/parse.y > ripper.tmp.y
 	$(Q) $(RUBY) $(top_srcdir)/tool/pure_parser.rb ripper.tmp.y $(BISON)
 	$(Q) $(RM) ripper.tmp.y.bak
 	$(Q) $(RUBY) $(srcdir)/tools/preproc.rb ripper.tmp.y --output=$@
diff --git a/tool/id2token.rb b/tool/id2token.rb
index d12ea9c08e..cf73095842 100755
--- a/tool/id2token.rb
+++ b/tool/id2token.rb
@@ -5,18 +5,15 @@ https://github.com/ruby/ruby/blob/trunk/tool/id2token.rb#L5
 
 BEGIN {
   require 'optparse'
-  require_relative 'lib/vpath'
-  vpath = VPath.new
-  header = nil
 
   opt = OptionParser.new do |o|
-    vpath.def_options(o)
-    header = o.order!(ARGV).shift
+    o.order!(ARGV)
   end or abort opt.opt_s
 
   TOKENS = {}
-  h = vpath.read(header) rescue abort("#{header} not found in #{vpath.inspect}")
-  h.scan(/^#define\s+RUBY_TOKEN_(\w+)\s+(\d+)/) do |token, id|
+  defs = File.join(File.dirname(File.dirname(__FILE__)), "defs/id.def")
+  ids = eval(File.read(defs), nil, defs)
+  ids[:token_op].each do |_id, _op, token, id|
     TOKENS[token] = id
   end
 
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]