You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2012/12/10 22:48:26 UTC
svn commit: r1419817 - /subversion/trunk/build/transform_sql.py
Author: danielsh
Date: Mon Dec 10 21:48:25 2012
New Revision: 1419817
URL: http://svn.apache.org/viewvc?rev=1419817&view=rev
Log:
Improve the new symbolic token maps.
* build/transform_sql.py
(NonRewritableDict): New.
(extract_token_map): Ensure that mappings do not override each other.
Modified:
subversion/trunk/build/transform_sql.py
Modified: subversion/trunk/build/transform_sql.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/transform_sql.py?rev=1419817&r1=1419816&r2=1419817&view=diff
==============================================================================
--- subversion/trunk/build/transform_sql.py (original)
+++ subversion/trunk/build/transform_sql.py Mon Dec 10 21:48:25 2012
@@ -178,6 +178,20 @@ class Processor(object):
self.var_printed = False
+class NonRewritableDict(dict):
+ """A dictionary that does not allow self[k]=v when k in self.
+
+ (An entry would have to be explicitly deleted before a new value
+ may be entered.)
+ """
+
+ def __setitem__(self, key, val):
+ if self.__contains__(key) and self.__getitem__(key) != val:
+ raise Exception("Can't re-insert key %r with value %r "
+ "(already present with value %r)"
+ % (key, val, self.__getitem__(key)))
+ super(NonRewritableDict, self).__setitem__(key, val)
+
def extract_token_map(filename):
try:
fd = open(filename)
@@ -185,7 +199,7 @@ def extract_token_map(filename):
return {}
pattern = re.compile(r'"(.*?)".*(MAP_\w*)')
- map = {}
+ map = NonRewritableDict()
hotspot = False
for line in fd:
if ('svn_token_map_t', '\x7d;')[hotspot] in line: