Ensure double is treated as primitive.
authorMs2ger <ms2ger@gmail.com>
Sun, 12 Feb 2012 17:50:40 +0100
changeset 86759 f95692cc4c97fe5f048e2196a42d956cd90d86c8
parent 86758 ca1591ca387f3b5da6e1e55e57414a15f68251c2
child 86760 ca2b13f5f434665d26b6ff56efc612d39ab8ee55
push id109
push userMs2ger@gmail.com
push dateSun, 12 Feb 2012 17:09:25 +0000
milestone13.0a1
Ensure double is treated as primitive.
dom/bindings/parser/WebIDL.py
dom/bindings/parser/tests/test_builtins.py
--- a/dom/bindings/parser/WebIDL.py
+++ b/dom/bindings/parser/WebIDL.py
@@ -854,17 +854,17 @@ class IDLBuiltinType(IDLType):
         }
 
     def __init__(self, location, name, type):
         IDLType.__init__(self, location, name)
         self.builtin = True
         self.type = type
 
     def isPrimitive(self):
-        return self.type < IDLBuiltinType.Types.double
+        return self.type <= IDLBuiltinType.Types.double
 
     def isString(self):
         return self.type == IDLBuiltinType.Types.domstring
 
     def isInteger(self):
         return self.type <= IDLBuiltinType.Types.unsigned_long_long
 
     def isArrayBuffer(self):
--- a/dom/bindings/parser/tests/test_builtins.py
+++ b/dom/bindings/parser/tests/test_builtins.py
@@ -1,28 +1,41 @@
 import WebIDL
 
 def WebIDLTest(parser, harness):
     parser.parse("""
         interface TestBuiltins {
+          attribute boolean b;
+          attribute byte s8;
+          attribute octet u8;
+          attribute short s16;
+          attribute unsigned short u16;
+          attribute long s32;
+          attribute unsigned long u32;
+          attribute long long s64;
+          attribute unsigned long long u64;
           attribute DOMTimeStamp ts;
         };
     """)
 
     results = parser.finish()
 
     harness.ok(True, "TestBuiltins interface parsed without error.")
     harness.check(len(results), 1, "Should be one production")
     harness.ok(isinstance(results[0], WebIDL.IDLInterface),
                "Should be an IDLInterface")
     iface = results[0]
     harness.check(iface.identifier.QName(), "::TestBuiltins", "Interface has the right QName")
     harness.check(iface.identifier.name, "TestBuiltins", "Interface has the right name")
     harness.check(iface.parent, None, "Interface has no parent")
 
     members = iface.members
-    harness.check(len(members), 1, "Should be one production")
-    harness.ok(isinstance(members[0], WebIDL.IDLAttribute),
-               "Should be an IDLAttribute")
-    attr = members[0]
-    harness.check(attr.identifier.QName(), "::TestBuiltins::ts", "Attr has correct QName")
-    harness.check(attr.identifier.name, "ts", "Attr has correct name")
-    harness.check(str(attr.type), "DOMTimeStamp", "Attr type is the correct name")
+    harness.check(len(members), 10, "Should be one production")
+
+    names = ["b", "s8", "u8", "s16", "u16", "s32", "u32", "s64", "u64", "ts"]
+    types = ["Boolean", "Byte", "Octet", "Short", "UnsignedShort", "Long", "UnsignedLong", "LongLong", "UnsignedLongLong", "DOMTimeStamp"]
+    for i in range(10):
+        attr = members[i]
+        harness.ok(isinstance(attr, WebIDL.IDLAttribute), "Should be an IDLAttribute")
+        harness.check(attr.identifier.QName(), "::TestBuiltins::" + names[i], "Attr has correct QName")
+        harness.check(attr.identifier.name, names[i], "Attr has correct name")
+        harness.check(str(attr.type), types[i], "Attr type is the correct name")
+        harness.check(attr.type.isPrimitive(), i != 9, "Should be a primitive type")