[pypy-commit] pypy default: merge

fijal noreply at buildbot.pypy.org
Thu May 28 14:24:01 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: 
Changeset: r77648:77680da4a885
Date: 2015-05-28 14:23 +0200
http://bitbucket.org/pypy/pypy/changeset/77680da4a885/

Log:	merge

diff --git a/pypy/module/_cffi_backend/test/test_recompiler.py b/pypy/module/_cffi_backend/test/test_recompiler.py
--- a/pypy/module/_cffi_backend/test/test_recompiler.py
+++ b/pypy/module/_cffi_backend/test/test_recompiler.py
@@ -822,3 +822,30 @@
         assert lib.toint(lib.CONSTANT) == 42
         random_stuff()
         assert lib.toint(lib.CONSTANT) == 42
+
+    def test_constant_is_not_a_compiler_constant(self):
+        ffi, lib = self.prepare(
+            "static const float almost_forty_two;",
+            'test_constant_is_not_a_compiler_constant', """
+                static float f(void) { return 42.25; }
+                #define almost_forty_two (f())
+            """)
+        assert lib.almost_forty_two == 42.25
+
+    def test_variable_of_unknown_size(self):
+        ffi, lib = self.prepare("""
+            typedef ... opaque_t;
+            opaque_t globvar;
+        """, 'test_constant_of_unknown_size', """
+            typedef char opaque_t[6];
+            opaque_t globvar = "hello";
+        """)
+        # can't read or write it at all
+        e = raises(TypeError, getattr, lib, 'globvar')
+        assert str(e.value) == "'opaque_t' is opaque or not completed yet"
+        e = raises(TypeError, setattr, lib, 'globvar', [])
+        assert str(e.value) == "'opaque_t' is opaque or not completed yet"
+        # but we can get its address
+        p = ffi.addressof(lib, 'globvar')
+        assert ffi.typeof(p) == ffi.typeof('opaque_t *')
+        assert ffi.string(ffi.cast("char *", p), 8) == "hello"


More information about the pypy-commit mailing list