diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-04-13 22:29:49 +0200 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-04-13 22:29:49 +0200 |
commit | 7c0c098b89dc33ad1018b6542def4e2d34ddd2a8 (patch) | |
tree | 4046050250c6d210dd89a8cac96d39bf967e6b46 /modules/language | |
parent | 720e9958d2230ce244f8eb666b7cd1b2deff82eb (diff) |
attribute error on missing attribute lookup
Diffstat (limited to 'modules/language')
-rw-r--r-- | modules/language/python/compile.scm | 12 | ||||
-rw-r--r-- | modules/language/python/module/enum.py | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/modules/language/python/compile.scm b/modules/language/python/compile.scm index 0b3b872..fc4a1c7 100644 --- a/modules/language/python/compile.scm +++ b/modules/language/python/compile.scm @@ -1932,7 +1932,13 @@ (apply values l)))) lam)))) obj))))) - + +(define miss (list 'miss)) +(define-inlinable (wr k x) + (if (eq? x miss) + (raise (AttributeError k)) + x)) + (define-syntax ref-x (lambda (x) (syntax-case x () @@ -1943,7 +1949,7 @@ ((_ v (#:fast-id f _) . l) #'(ref-x (f v) . l)) ((_ v (#:identifier x) . l) - #'(ref-x (ref v x) . l)) + #'(ref-x (wr x (ref v x miss)) . l)) ((_ v (#:call-obj x) . l) #'(ref-x (x v) . l)) ((_ v (#:call x ...) . l) @@ -1960,7 +1966,7 @@ (define-syntax del-x (syntax-rules () ((_ v (#:identifier x)) - (ref-x (ref v 'x))) + (ref-x (wr x (ref v x)))) ((_ v (#:call-obj x)) (values)) ((_ v (#:call x ...)) diff --git a/modules/language/python/module/enum.py b/modules/language/python/module/enum.py index 4f388ad..89047cd 100644 --- a/modules/language/python/module/enum.py +++ b/modules/language/python/module/enum.py @@ -548,7 +548,7 @@ class Enum(metaclass=EnumMeta): def __repr__(self): return "<%s.%s: %r>" % ( - self.__class__.__name__, self._name_, self._value_) + self.__class__.__name__, self._name_, self._value_) def __str__(self): return "%s.%s" % (self.__class__.__name__, self._name_) |