From 67fcb5629360162b76083716124d64f6a740034a Mon Sep 17 00:00:00 2001 From: Robert O'Callahan Date: Wed, 30 Jan 2013 18:20:53 +1300 Subject: [PATCH] Bug 832788. Part 5: Add suffixes for large integer literals. r=bz --HG-- extra : rebase_source : 9555960acea609a3e4a3deaacd468e64435f5ff2 --- dom/bindings/Codegen.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py index edbfaf738a5a..acf9fb2193c6 100644 --- a/dom/bindings/Codegen.py +++ b/dom/bindings/Codegen.py @@ -1825,13 +1825,18 @@ builtinNames = { IDLType.Tags.double: 'double' } -numericTags = [ - IDLType.Tags.int8, IDLType.Tags.uint8, - IDLType.Tags.int16, IDLType.Tags.uint16, - IDLType.Tags.int32, IDLType.Tags.uint32, - IDLType.Tags.int64, IDLType.Tags.uint64, - IDLType.Tags.float, IDLType.Tags.double - ] +numericSuffixes = { + IDLType.Tags.int8: '', + IDLType.Tags.uint8: '', + IDLType.Tags.int16: '', + IDLType.Tags.uint16: '', + IDLType.Tags.int32: '', + IDLType.Tags.uint32: 'U', + IDLType.Tags.int64: 'LL', + IDLType.Tags.uint64: 'ULL', + IDLType.Tags.float: 'F', + IDLType.Tags.double: 'D' +} class CastableObjectUnwrapper(): """ @@ -2987,8 +2992,9 @@ for (uint32_t i = 0; i < length; ++i) { # We already handled IDLNullValue, so just deal with the other ones not isinstance(defaultValue, IDLNullValue)): tag = defaultValue.type.tag() - if tag in numericTags: - defaultStr = defaultValue.value + if tag in numericSuffixes: + # Some numeric literals require a suffix to compile without warnings + defaultStr = "%s%s" % (defaultValue.value, numericSuffixes[tag]) else: assert(tag == IDLType.Tags.bool) defaultStr = toStringBool(defaultValue.value) @@ -3093,9 +3099,9 @@ def convertConstIDLValueToJSVal(value): IDLType.Tags.uint16, IDLType.Tags.int32]: return "INT_TO_JSVAL(%s)" % (value.value) if tag == IDLType.Tags.uint32: - return "UINT_TO_JSVAL(%s)" % (value.value) + return "UINT_TO_JSVAL(%sU)" % (value.value) if tag in [IDLType.Tags.int64, IDLType.Tags.uint64]: - return "DOUBLE_TO_JSVAL(%s)" % (value.value) + return "DOUBLE_TO_JSVAL(%s%s)" % (value.value, numericSuffixes[tag]) if tag == IDLType.Tags.bool: return "JSVAL_TRUE" if value.value else "JSVAL_FALSE" if tag in [IDLType.Tags.float, IDLType.Tags.double]: