[Jython-checkins] jython: #2108 Added dicts to all AST classes.

frank.wierzbicki jython-checkins at python.org
Fri May 16 02:07:31 CEST 2014


http://hg.python.org/jython/rev/ecb9475b7808
changeset:   7251:ecb9475b7808
user:        Frank Wierzbicki <fwierzbicki at gmail.com>
date:        Fri May 16 00:07:24 2014 +0000
summary:
  #2108 Added dicts to all AST classes.

files:
  NEWS                                         |   2 +-
  ast/asdl_antlr.py                            |  24 ++++++++++
  src/org/python/antlr/ast/Assert.java         |  20 ++++++++
  src/org/python/antlr/ast/Assign.java         |  20 ++++++++
  src/org/python/antlr/ast/Attribute.java      |  20 ++++++++
  src/org/python/antlr/ast/AugAssign.java      |  20 ++++++++
  src/org/python/antlr/ast/BinOp.java          |  20 ++++++++
  src/org/python/antlr/ast/BoolOp.java         |  20 ++++++++
  src/org/python/antlr/ast/Break.java          |  20 ++++++++
  src/org/python/antlr/ast/Call.java           |  20 ++++++++
  src/org/python/antlr/ast/ClassDef.java       |  20 ++++++++
  src/org/python/antlr/ast/Compare.java        |  20 ++++++++
  src/org/python/antlr/ast/Continue.java       |  20 ++++++++
  src/org/python/antlr/ast/Delete.java         |  20 ++++++++
  src/org/python/antlr/ast/Dict.java           |  20 ++++++++
  src/org/python/antlr/ast/DictComp.java       |  20 ++++++++
  src/org/python/antlr/ast/Ellipsis.java       |  20 ++++++++
  src/org/python/antlr/ast/ExceptHandler.java  |  20 ++++++++
  src/org/python/antlr/ast/Exec.java           |  20 ++++++++
  src/org/python/antlr/ast/Expr.java           |  20 ++++++++
  src/org/python/antlr/ast/Expression.java     |  20 ++++++++
  src/org/python/antlr/ast/ExtSlice.java       |  20 ++++++++
  src/org/python/antlr/ast/For.java            |  20 ++++++++
  src/org/python/antlr/ast/FunctionDef.java    |  20 ++++++++
  src/org/python/antlr/ast/GeneratorExp.java   |  20 ++++++++
  src/org/python/antlr/ast/Global.java         |  20 ++++++++
  src/org/python/antlr/ast/If.java             |  20 ++++++++
  src/org/python/antlr/ast/IfExp.java          |  20 ++++++++
  src/org/python/antlr/ast/Import.java         |  20 ++++++++
  src/org/python/antlr/ast/ImportFrom.java     |  20 ++++++++
  src/org/python/antlr/ast/Index.java          |  20 ++++++++
  src/org/python/antlr/ast/Interactive.java    |  20 ++++++++
  src/org/python/antlr/ast/Lambda.java         |  20 ++++++++
  src/org/python/antlr/ast/List.java           |  20 ++++++++
  src/org/python/antlr/ast/ListComp.java       |  20 ++++++++
  src/org/python/antlr/ast/Module.java         |  20 ++++++++
  src/org/python/antlr/ast/Name.java           |  20 ++++++++
  src/org/python/antlr/ast/Num.java            |  20 ++++++++
  src/org/python/antlr/ast/Pass.java           |  20 ++++++++
  src/org/python/antlr/ast/Print.java          |  20 ++++++++
  src/org/python/antlr/ast/Raise.java          |  20 ++++++++
  src/org/python/antlr/ast/Repr.java           |  20 ++++++++
  src/org/python/antlr/ast/Return.java         |  20 ++++++++
  src/org/python/antlr/ast/Set.java            |  20 ++++++++
  src/org/python/antlr/ast/SetComp.java        |  20 ++++++++
  src/org/python/antlr/ast/Slice.java          |  20 ++++++++
  src/org/python/antlr/ast/Str.java            |  20 ++++++++
  src/org/python/antlr/ast/Subscript.java      |  20 ++++++++
  src/org/python/antlr/ast/Suite.java          |  20 ++++++++
  src/org/python/antlr/ast/TryExcept.java      |  20 ++++++++
  src/org/python/antlr/ast/TryFinally.java     |  20 ++++++++
  src/org/python/antlr/ast/Tuple.java          |  20 ++++++++
  src/org/python/antlr/ast/UnaryOp.java        |  20 ++++++++
  src/org/python/antlr/ast/VisitorBase.java    |   1 +
  src/org/python/antlr/ast/While.java          |  20 ++++++++
  src/org/python/antlr/ast/With.java           |  20 ++++++++
  src/org/python/antlr/ast/Yield.java          |  20 ++++++++
  src/org/python/antlr/ast/alias.java          |  20 ++++++++
  src/org/python/antlr/ast/arguments.java      |  20 ++++++++
  src/org/python/antlr/ast/comprehension.java  |  20 ++++++++
  src/org/python/antlr/ast/keyword.java        |  20 ++++++++
  src/org/python/antlr/base/excepthandler.java |   1 +
  src/org/python/antlr/base/expr.java          |   1 +
  src/org/python/antlr/base/mod.java           |   1 +
  src/org/python/antlr/base/slice.java         |   1 +
  src/org/python/antlr/base/stmt.java          |   1 +
  66 files changed, 1191 insertions(+), 1 deletions(-)


diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,7 @@
 
 Jython 2.7b3
   Bugs Fixed
-
+    - [ 2108 ] Cannot set attribute to instances of AST/PythonTree (blocks pyflakes)
   New Features
     - [ 1896215 ] findResource(s) for SyspathJavaLoader
 
diff --git a/ast/asdl_antlr.py b/ast/asdl_antlr.py
--- a/ast/asdl_antlr.py
+++ b/ast/asdl_antlr.py
@@ -73,6 +73,7 @@
             print >> self.file, 'import org.python.core.Py;'
             print >> self.file, 'import org.python.core.PyObject;'
             print >> self.file, 'import org.python.core.PyString;'
+            print >> self.file, 'import org.python.core.PyStringMap;'
             print >> self.file, 'import org.python.core.PyType;'
             print >> self.file, 'import org.python.expose.ExposedGet;'
             print >> self.file, 'import org.python.expose.ExposedMethod;'
@@ -466,6 +467,29 @@
         self.emit('}', depth)
         self.emit("", 0)
 
+        self.emit('public PyObject __dict__;', depth)
+        self.emit("", 0)
+        self.emit('@Override', depth)
+        self.emit('public PyObject fastGetDict() {', depth)
+        self.emit('ensureDict();', depth+1)
+        self.emit('return __dict__;', depth+1)
+        self.emit('}', depth)
+        self.emit("", 0)
+
+        self.emit('@ExposedGet(name = "__dict__")', depth)
+        self.emit('public PyObject getDict() {', depth)
+        self.emit('return fastGetDict();', depth+1)
+        self.emit('}', depth)
+        self.emit("", 0)
+
+        self.emit('private void ensureDict() {', depth)
+        self.emit('if (__dict__ == null) {', depth+1)
+        self.emit('__dict__ = new PyStringMap();', depth+2)
+        self.emit('}', depth+1)
+        self.emit('}', depth)
+        self.emit("", 0)
+
+
     def javaConstructors(self, type, name, clsname, is_product, fields, depth):
         self.emit("public %s(PyType subType) {" % (clsname), depth)
         self.emit("super(subType);", depth + 1)
diff --git a/src/org/python/antlr/ast/Assert.java b/src/org/python/antlr/ast/Assert.java
--- a/src/org/python/antlr/ast/Assert.java
+++ b/src/org/python/antlr/ast/Assert.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -147,6 +148,25 @@
             msg.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Assign.java b/src/org/python/antlr/ast/Assign.java
--- a/src/org/python/antlr/ast/Assign.java
+++ b/src/org/python/antlr/ast/Assign.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -166,6 +167,25 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Attribute.java b/src/org/python/antlr/ast/Attribute.java
--- a/src/org/python/antlr/ast/Attribute.java
+++ b/src/org/python/antlr/ast/Attribute.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -164,6 +165,25 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     public void setContext(expr_contextType c) {
         this.ctx = c;
     }
diff --git a/src/org/python/antlr/ast/AugAssign.java b/src/org/python/antlr/ast/AugAssign.java
--- a/src/org/python/antlr/ast/AugAssign.java
+++ b/src/org/python/antlr/ast/AugAssign.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -168,6 +169,25 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/BinOp.java b/src/org/python/antlr/ast/BinOp.java
--- a/src/org/python/antlr/ast/BinOp.java
+++ b/src/org/python/antlr/ast/BinOp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -168,6 +169,25 @@
             right.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/BoolOp.java b/src/org/python/antlr/ast/BoolOp.java
--- a/src/org/python/antlr/ast/BoolOp.java
+++ b/src/org/python/antlr/ast/BoolOp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -161,6 +162,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Break.java b/src/org/python/antlr/ast/Break.java
--- a/src/org/python/antlr/ast/Break.java
+++ b/src/org/python/antlr/ast/Break.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -91,6 +92,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Call.java b/src/org/python/antlr/ast/Call.java
--- a/src/org/python/antlr/ast/Call.java
+++ b/src/org/python/antlr/ast/Call.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -268,6 +269,25 @@
             kwargs.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/ClassDef.java b/src/org/python/antlr/ast/ClassDef.java
--- a/src/org/python/antlr/ast/ClassDef.java
+++ b/src/org/python/antlr/ast/ClassDef.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -256,6 +257,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Compare.java b/src/org/python/antlr/ast/Compare.java
--- a/src/org/python/antlr/ast/Compare.java
+++ b/src/org/python/antlr/ast/Compare.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -190,6 +191,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Continue.java b/src/org/python/antlr/ast/Continue.java
--- a/src/org/python/antlr/ast/Continue.java
+++ b/src/org/python/antlr/ast/Continue.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -91,6 +92,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Delete.java b/src/org/python/antlr/ast/Delete.java
--- a/src/org/python/antlr/ast/Delete.java
+++ b/src/org/python/antlr/ast/Delete.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -140,6 +141,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Dict.java b/src/org/python/antlr/ast/Dict.java
--- a/src/org/python/antlr/ast/Dict.java
+++ b/src/org/python/antlr/ast/Dict.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -186,6 +187,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/DictComp.java b/src/org/python/antlr/ast/DictComp.java
--- a/src/org/python/antlr/ast/DictComp.java
+++ b/src/org/python/antlr/ast/DictComp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -194,6 +195,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Ellipsis.java b/src/org/python/antlr/ast/Ellipsis.java
--- a/src/org/python/antlr/ast/Ellipsis.java
+++ b/src/org/python/antlr/ast/Ellipsis.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -80,4 +81,23 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/ExceptHandler.java b/src/org/python/antlr/ast/ExceptHandler.java
--- a/src/org/python/antlr/ast/ExceptHandler.java
+++ b/src/org/python/antlr/ast/ExceptHandler.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -193,6 +194,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Exec.java b/src/org/python/antlr/ast/Exec.java
--- a/src/org/python/antlr/ast/Exec.java
+++ b/src/org/python/antlr/ast/Exec.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -173,6 +174,25 @@
             locals.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Expr.java b/src/org/python/antlr/ast/Expr.java
--- a/src/org/python/antlr/ast/Expr.java
+++ b/src/org/python/antlr/ast/Expr.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -121,6 +122,25 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Expression.java b/src/org/python/antlr/ast/Expression.java
--- a/src/org/python/antlr/ast/Expression.java
+++ b/src/org/python/antlr/ast/Expression.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -110,4 +111,23 @@
             body.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/ExtSlice.java b/src/org/python/antlr/ast/ExtSlice.java
--- a/src/org/python/antlr/ast/ExtSlice.java
+++ b/src/org/python/antlr/ast/ExtSlice.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -129,4 +130,23 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/For.java b/src/org/python/antlr/ast/For.java
--- a/src/org/python/antlr/ast/For.java
+++ b/src/org/python/antlr/ast/For.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -241,6 +242,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/FunctionDef.java b/src/org/python/antlr/ast/FunctionDef.java
--- a/src/org/python/antlr/ast/FunctionDef.java
+++ b/src/org/python/antlr/ast/FunctionDef.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -234,6 +235,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/GeneratorExp.java b/src/org/python/antlr/ast/GeneratorExp.java
--- a/src/org/python/antlr/ast/GeneratorExp.java
+++ b/src/org/python/antlr/ast/GeneratorExp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -167,6 +168,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Global.java b/src/org/python/antlr/ast/Global.java
--- a/src/org/python/antlr/ast/Global.java
+++ b/src/org/python/antlr/ast/Global.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -116,6 +117,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/If.java b/src/org/python/antlr/ast/If.java
--- a/src/org/python/antlr/ast/If.java
+++ b/src/org/python/antlr/ast/If.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -212,6 +213,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/IfExp.java b/src/org/python/antlr/ast/IfExp.java
--- a/src/org/python/antlr/ast/IfExp.java
+++ b/src/org/python/antlr/ast/IfExp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -173,6 +174,25 @@
             orelse.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Import.java b/src/org/python/antlr/ast/Import.java
--- a/src/org/python/antlr/ast/Import.java
+++ b/src/org/python/antlr/ast/Import.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -140,6 +141,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/ImportFrom.java b/src/org/python/antlr/ast/ImportFrom.java
--- a/src/org/python/antlr/ast/ImportFrom.java
+++ b/src/org/python/antlr/ast/ImportFrom.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -184,6 +185,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Index.java b/src/org/python/antlr/ast/Index.java
--- a/src/org/python/antlr/ast/Index.java
+++ b/src/org/python/antlr/ast/Index.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -110,4 +111,23 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/Interactive.java b/src/org/python/antlr/ast/Interactive.java
--- a/src/org/python/antlr/ast/Interactive.java
+++ b/src/org/python/antlr/ast/Interactive.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -129,4 +130,23 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/Lambda.java b/src/org/python/antlr/ast/Lambda.java
--- a/src/org/python/antlr/ast/Lambda.java
+++ b/src/org/python/antlr/ast/Lambda.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -144,6 +145,25 @@
             body.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/List.java b/src/org/python/antlr/ast/List.java
--- a/src/org/python/antlr/ast/List.java
+++ b/src/org/python/antlr/ast/List.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -161,6 +162,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     public void setContext(expr_contextType c) {
         this.ctx = c;
     }
diff --git a/src/org/python/antlr/ast/ListComp.java b/src/org/python/antlr/ast/ListComp.java
--- a/src/org/python/antlr/ast/ListComp.java
+++ b/src/org/python/antlr/ast/ListComp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -167,6 +168,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Module.java b/src/org/python/antlr/ast/Module.java
--- a/src/org/python/antlr/ast/Module.java
+++ b/src/org/python/antlr/ast/Module.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -129,4 +130,23 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/Name.java b/src/org/python/antlr/ast/Name.java
--- a/src/org/python/antlr/ast/Name.java
+++ b/src/org/python/antlr/ast/Name.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -138,6 +139,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     public void setContext(expr_contextType c) {
         this.ctx = c;
     }
diff --git a/src/org/python/antlr/ast/Num.java b/src/org/python/antlr/ast/Num.java
--- a/src/org/python/antlr/ast/Num.java
+++ b/src/org/python/antlr/ast/Num.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -116,6 +117,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Pass.java b/src/org/python/antlr/ast/Pass.java
--- a/src/org/python/antlr/ast/Pass.java
+++ b/src/org/python/antlr/ast/Pass.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -91,6 +92,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Print.java b/src/org/python/antlr/ast/Print.java
--- a/src/org/python/antlr/ast/Print.java
+++ b/src/org/python/antlr/ast/Print.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -188,6 +189,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Raise.java b/src/org/python/antlr/ast/Raise.java
--- a/src/org/python/antlr/ast/Raise.java
+++ b/src/org/python/antlr/ast/Raise.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -173,6 +174,25 @@
             tback.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Repr.java b/src/org/python/antlr/ast/Repr.java
--- a/src/org/python/antlr/ast/Repr.java
+++ b/src/org/python/antlr/ast/Repr.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -121,6 +122,25 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Return.java b/src/org/python/antlr/ast/Return.java
--- a/src/org/python/antlr/ast/Return.java
+++ b/src/org/python/antlr/ast/Return.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -121,6 +122,25 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Set.java b/src/org/python/antlr/ast/Set.java
--- a/src/org/python/antlr/ast/Set.java
+++ b/src/org/python/antlr/ast/Set.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -140,6 +141,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/SetComp.java b/src/org/python/antlr/ast/SetComp.java
--- a/src/org/python/antlr/ast/SetComp.java
+++ b/src/org/python/antlr/ast/SetComp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -166,6 +167,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Slice.java b/src/org/python/antlr/ast/Slice.java
--- a/src/org/python/antlr/ast/Slice.java
+++ b/src/org/python/antlr/ast/Slice.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -162,4 +163,23 @@
             step.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/Str.java b/src/org/python/antlr/ast/Str.java
--- a/src/org/python/antlr/ast/Str.java
+++ b/src/org/python/antlr/ast/Str.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -116,6 +117,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Subscript.java b/src/org/python/antlr/ast/Subscript.java
--- a/src/org/python/antlr/ast/Subscript.java
+++ b/src/org/python/antlr/ast/Subscript.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -165,6 +166,25 @@
             slice.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     public void setContext(expr_contextType c) {
         this.ctx = c;
     }
diff --git a/src/org/python/antlr/ast/Suite.java b/src/org/python/antlr/ast/Suite.java
--- a/src/org/python/antlr/ast/Suite.java
+++ b/src/org/python/antlr/ast/Suite.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -129,4 +130,23 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/TryExcept.java b/src/org/python/antlr/ast/TryExcept.java
--- a/src/org/python/antlr/ast/TryExcept.java
+++ b/src/org/python/antlr/ast/TryExcept.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -233,6 +234,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/TryFinally.java b/src/org/python/antlr/ast/TryFinally.java
--- a/src/org/python/antlr/ast/TryFinally.java
+++ b/src/org/python/antlr/ast/TryFinally.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -186,6 +187,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Tuple.java b/src/org/python/antlr/ast/Tuple.java
--- a/src/org/python/antlr/ast/Tuple.java
+++ b/src/org/python/antlr/ast/Tuple.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -161,6 +162,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     public void setContext(expr_contextType c) {
         this.ctx = c;
     }
diff --git a/src/org/python/antlr/ast/UnaryOp.java b/src/org/python/antlr/ast/UnaryOp.java
--- a/src/org/python/antlr/ast/UnaryOp.java
+++ b/src/org/python/antlr/ast/UnaryOp.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -142,6 +143,25 @@
             operand.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/VisitorBase.java b/src/org/python/antlr/ast/VisitorBase.java
--- a/src/org/python/antlr/ast/VisitorBase.java
+++ b/src/org/python/antlr/ast/VisitorBase.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
diff --git a/src/org/python/antlr/ast/While.java b/src/org/python/antlr/ast/While.java
--- a/src/org/python/antlr/ast/While.java
+++ b/src/org/python/antlr/ast/While.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -213,6 +214,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/With.java b/src/org/python/antlr/ast/With.java
--- a/src/org/python/antlr/ast/With.java
+++ b/src/org/python/antlr/ast/With.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -194,6 +195,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/Yield.java b/src/org/python/antlr/ast/Yield.java
--- a/src/org/python/antlr/ast/Yield.java
+++ b/src/org/python/antlr/ast/Yield.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -121,6 +122,25 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     private int lineno = -1;
     @ExposedGet(name = "lineno")
     public int getLineno() {
diff --git a/src/org/python/antlr/ast/alias.java b/src/org/python/antlr/ast/alias.java
--- a/src/org/python/antlr/ast/alias.java
+++ b/src/org/python/antlr/ast/alias.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -129,6 +130,25 @@
     public void traverse(VisitorIF<?> visitor) throws Exception {
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     // Support for indexer below
 
     private java.util.List<Name> nameNodes;
diff --git a/src/org/python/antlr/ast/arguments.java b/src/org/python/antlr/ast/arguments.java
--- a/src/org/python/antlr/ast/arguments.java
+++ b/src/org/python/antlr/ast/arguments.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -223,6 +224,25 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
     // Support for indexer below
 
     private Name varargName;
diff --git a/src/org/python/antlr/ast/comprehension.java b/src/org/python/antlr/ast/comprehension.java
--- a/src/org/python/antlr/ast/comprehension.java
+++ b/src/org/python/antlr/ast/comprehension.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -183,4 +184,23 @@
         }
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/ast/keyword.java b/src/org/python/antlr/ast/keyword.java
--- a/src/org/python/antlr/ast/keyword.java
+++ b/src/org/python/antlr/ast/keyword.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
@@ -133,4 +134,23 @@
             value.accept(visitor);
     }
 
+    public PyObject __dict__;
+
+    @Override
+    public PyObject fastGetDict() {
+        ensureDict();
+        return __dict__;
+    }
+
+    @ExposedGet(name = "__dict__")
+    public PyObject getDict() {
+        return fastGetDict();
+    }
+
+    private void ensureDict() {
+        if (__dict__ == null) {
+            __dict__ = new PyStringMap();
+        }
+    }
+
 }
diff --git a/src/org/python/antlr/base/excepthandler.java b/src/org/python/antlr/base/excepthandler.java
--- a/src/org/python/antlr/base/excepthandler.java
+++ b/src/org/python/antlr/base/excepthandler.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
diff --git a/src/org/python/antlr/base/expr.java b/src/org/python/antlr/base/expr.java
--- a/src/org/python/antlr/base/expr.java
+++ b/src/org/python/antlr/base/expr.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
diff --git a/src/org/python/antlr/base/mod.java b/src/org/python/antlr/base/mod.java
--- a/src/org/python/antlr/base/mod.java
+++ b/src/org/python/antlr/base/mod.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
diff --git a/src/org/python/antlr/base/slice.java b/src/org/python/antlr/base/slice.java
--- a/src/org/python/antlr/base/slice.java
+++ b/src/org/python/antlr/base/slice.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;
diff --git a/src/org/python/antlr/base/stmt.java b/src/org/python/antlr/base/stmt.java
--- a/src/org/python/antlr/base/stmt.java
+++ b/src/org/python/antlr/base/stmt.java
@@ -15,6 +15,7 @@
 import org.python.core.Py;
 import org.python.core.PyObject;
 import org.python.core.PyString;
+import org.python.core.PyStringMap;
 import org.python.core.PyType;
 import org.python.expose.ExposedGet;
 import org.python.expose.ExposedMethod;

-- 
Repository URL: http://hg.python.org/jython


More information about the Jython-checkins mailing list