summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common.mk2
-rw-r--r--symbol.c25
-rw-r--r--symbol.h2
-rw-r--r--template/id.h.tmpl1
4 files changed, 23 insertions, 7 deletions
diff --git a/common.mk b/common.mk
index 733f5b2c3b..160df019af 100644
--- a/common.mk
+++ b/common.mk
@@ -780,7 +780,7 @@ string.$(OBJEXT): {$(VPATH)}string.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h {$(VPATH)
{$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
struct.$(OBJEXT): {$(VPATH)}struct.c $(RUBY_H_INCLUDES) {$(VPATH)}internal.h
symbol.$(OBJEXT): {$(VPATH)}symbol.c $(RUBY_H_INCLUDES) $(ENCODING_H_INCLUDES) \
- {$(VPATH)}internal.h {$(VPATH)}node.h {$(VPATH)}parse.h {$(VPATH)}id.h {$(VPATH)}symbol.h \
+ {$(VPATH)}internal.h {$(VPATH)}node.h {$(VPATH)}id.h {$(VPATH)}symbol.h \
$(PROBES_H_INCLUDES)
thread.$(OBJEXT): {$(VPATH)}thread.c {$(VPATH)}eval_intern.h \
$(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES) \
diff --git a/symbol.c b/symbol.c
index 342768b8fb..f82044a98e 100644
--- a/symbol.c
+++ b/symbol.c
@@ -14,7 +14,6 @@
#include "ruby/encoding.h"
#include "internal.h"
#include "node.h"
-#include "parse.h"
#include "symbol.h"
#include "gc.h"
#include "probes.h"
@@ -26,6 +25,24 @@ static ID register_static_symid_str(ID, VALUE);
#define is_identchar(p,e,enc) (rb_enc_isalnum((unsigned char)(*(p)),(enc)) || (*(p)) == '_' || !ISASCII(*(p)))
+#define tUPLUS RUBY_TOKEN(UPLUS)
+#define tUMINUS RUBY_TOKEN(UMINUS)
+#define tPOW RUBY_TOKEN(POW)
+#define tCMP RUBY_TOKEN(CMP)
+#define tEQ RUBY_TOKEN(EQ)
+#define tEQQ RUBY_TOKEN(EQQ)
+#define tNEQ RUBY_TOKEN(NEQ)
+#define tGEQ RUBY_TOKEN(GEQ)
+#define tLEQ RUBY_TOKEN(LEQ)
+#define tMATCH RUBY_TOKEN(MATCH)
+#define tNMATCH RUBY_TOKEN(NMATCH)
+#define tDOT2 RUBY_TOKEN(DOT2)
+#define tDOT3 RUBY_TOKEN(DOT3)
+#define tAREF RUBY_TOKEN(AREF)
+#define tASET RUBY_TOKEN(ASET)
+#define tLSHFT RUBY_TOKEN(LSHFT)
+#define tRSHFT RUBY_TOKEN(RSHFT)
+
static const struct {
unsigned short token;
const char name[3], term;
@@ -33,7 +50,6 @@ static const struct {
{tDOT2, ".."},
{tDOT3, "..."},
{tPOW, "**"},
- {tDSTAR, "**"},
{tUPLUS, "+@"},
{tUMINUS, "-@"},
{tCMP, "<=>"},
@@ -48,7 +64,6 @@ static const struct {
{tASET, "[]="},
{tLSHFT, "<<"},
{tRSHFT, ">>"},
- {tCOLON2, "::"},
};
#define op_tbl_count numberof(op_tbl)
@@ -60,7 +75,7 @@ static struct symbols {
st_table *str_id;
st_table *id_str;
VALUE dsymbol_fstr_hash;
-} global_symbols = {tLAST_TOKEN};
+} global_symbols = {tNEXT_ID-1};
static const struct st_hash_type symhash = {
rb_str_hash_cmp,
@@ -769,7 +784,7 @@ rb_id2str(ID id)
{
st_data_t data;
- if (id < tLAST_TOKEN) {
+ if (id < tLAST_OP_ID) {
int i = 0;
if (id < INT_MAX && rb_ispunct((int)id)) {
diff --git a/symbol.h b/symbol.h
index b801fbfea4..809ecac459 100644
--- a/symbol.h
+++ b/symbol.h
@@ -14,7 +14,7 @@
#include "id.h"
-#define ID_DYNAMIC_SYM_P(id) (!(id&ID_STATIC_SYM)&&id>tLAST_TOKEN)
+#define ID_DYNAMIC_SYM_P(id) (!(id&ID_STATIC_SYM)&&id>tLAST_OP_ID)
#define STATIC_SYM2ID(sym) RSHIFT((unsigned long)(sym), RUBY_SPECIAL_SHIFT)
#define STATIC_ID2SYM(id) (((VALUE)(id)<<RUBY_SPECIAL_SHIFT)|SYMBOL_FLAG)
diff --git a/template/id.h.tmpl b/template/id.h.tmpl
index 0a480f438f..d7e10e9330 100644
--- a/template/id.h.tmpl
+++ b/template/id.h.tmpl
@@ -98,6 +98,7 @@ enum ruby_method_ids {
% ids.values_at(*types).flatten.each do |token|
t<%=token%>,
% end
+ tNEXT_ID,
% types.each do |type|
% types = ids[type] or next
% types.empty? and next