thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Buğra Gedik (JIRA) <j...@apache.org>
Subject [jira] [Created] (THRIFT-4675) JS code generators not handling int64 type properly for constants and for TypeScript type mappings
Date Thu, 29 Nov 2018 16:36:00 GMT
Buğra Gedik created THRIFT-4675:
-----------------------------------

             Summary: JS code generators not handling int64 type properly for constants and
for TypeScript type mappings
                 Key: THRIFT-4675
                 URL: https://issues.apache.org/jira/browse/THRIFT-4675
             Project: Thrift
          Issue Type: Bug
          Components: JavaScript - Compiler
    Affects Versions: 0.11.0
            Reporter: Buğra Gedik


The code generated for JS constants involving int64 does not reply on the Int64 type. For
example:

    const i64 MAX_INT64 = 9223372036854775807
    const i64 SMALL_INT64 = 15

This results in generating the following code:

For node.js:
    ttypes.MAX_INT64 = 9223372036854775807;  
    ttypes.SMALL_INT64 = 15;  

For the browser:
    MAX_INT64 = 9223372036854775807;
    SMALL_INT64 = 15;  

Since JS cannot represent integers that do not fit into a double precision floating point,
this will result in lost precision. 

The correct output should be (node.js):
    ttypes.MAX_INT64 = new Int64(''7FFFFFFFFFFFFFFF'');  
    ttypes.SMALL_INT64 = new Int64(15);  

Besides this, none of the Typescript type bindings (.d.ts files) contain the types for int64
types. This includes both the constants, types, and service method parameters. 

Note that fixing this may break some of the existing code. So please advise if this should
be a separate option or not. In my mind, this is how it should work by default, but I don't
know the policy in Thrift regarding backward compatibility. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message