diff options
author | Facundo Batista <facundobatista@gmail.com> | 2008-02-25 18:06:00 +0000 |
---|---|---|
committer | Facundo Batista <facundobatista@gmail.com> | 2008-02-25 18:06:00 +0000 |
commit | 4219da4bd0bd46733e6c07ea33c57d45e11641cf (patch) | |
tree | c134c4de7dc6a217c0cb719e555386894fd41e8a /Lib/compiler/transformer.py | |
parent | a3c8c10201fb38fb078a4ad2758d945d44c07a5f (diff) | |
download | cpython-git-4219da4bd0bd46733e6c07ea33c57d45e11641cf.tar.gz |
Issue 2117. Update compiler module to handle class decorators.
Thanks Thomas Herve
Diffstat (limited to 'Lib/compiler/transformer.py')
-rw-r--r-- | Lib/compiler/transformer.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py index 56cc1efe71..8c367e2129 100644 --- a/Lib/compiler/transformer.py +++ b/Lib/compiler/transformer.py @@ -232,6 +232,18 @@ class Transformer: items.append(self.decorator(dec_nodelist[1:])) return Decorators(items) + def decorated(self, nodelist): + assert nodelist[0][0] == symbol.decorators + if nodelist[1][0] == symbol.funcdef: + n = [nodelist[0]] + list(nodelist[1][1:]) + return self.funcdef(n) + elif nodelist[1][0] == symbol.classdef: + decorators = self.decorators(nodelist[0][1:]) + cls = self.classdef(nodelist[1][1:]) + cls.decorators = decorators + return cls + raise WalkerError() + def funcdef(self, nodelist): # -6 -5 -4 -3 -2 -1 # funcdef: [decorators] 'def' NAME parameters ':' suite |