summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-21 07:38:11 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-21 07:38:11 +0000
commit94a4bc0ef4165e42ec36c9562ce7a7bcf01ba1cf (patch)
tree434d3151bc82abfff5ffc0072a432ddc1160b2da
parent2edcf87c1c30c29562fc52075896935ebf398367 (diff)
id.h.tmpl: ID2ATTRSET
* template/id.h.tmpl (ID2ATTRSET): compile time constant macro for ID_ATTRSET. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--defs/id.def2
-rw-r--r--template/id.h.tmpl2
3 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 678ac3f439..c99c3266e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
-Fri Dec 21 16:38:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Dec 21 16:38:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * template/id.h.tmpl (ID2ATTRSET): compile time constant macro for
+ ID_ATTRSET.
* defs/id.def (KeywordError): check duplication.
diff --git a/defs/id.def b/defs/id.def
index 48c6334227..1196e8fa9a 100644
--- a/defs/id.def
+++ b/defs/id.def
@@ -72,6 +72,8 @@ predefined.lines.each_with_index do |line, num|
when /\A\$(?:\d+|(?!\d)\w+)\z/; global_ids
when /\A@@(?!\d)\w+\z/; class_ids
when /\A@(?!\d)\w+\z/; instance_ids
+ when /\A((?!\d)\w+)=\z/
+ KeywordError.raise("use ID2ATTRSET(#{$1}) instead of ATTRSET #{name}", firstline+num)
else preserved_ids
end << token
predefined_ids[token] = name
diff --git a/template/id.h.tmpl b/template/id.h.tmpl
index 1573247c86..c993243424 100644
--- a/template/id.h.tmpl
+++ b/template/id.h.tmpl
@@ -39,6 +39,8 @@ types = ids.keys.grep(/^[A-Z]/)
#define ID_JUNK 0x07
#define ID_INTERNAL ID_JUNK
+#define ID2ATTRSET(id) (((id)&~ID_SCOPE_MASK)|ID_ATTRSET)
+
#define symIFUNC ID2SYM(idIFUNC)
#define symCFUNC ID2SYM(idCFUNC)