[ https://issues.apache.org/jira/browse/THRIFT-4476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16403451#comment-16403451 ]
ASF GitHub Bot commented on THRIFT-4476: ---------------------------------------- GitHub user ozymaxx reopened a pull request: https://github.com/apache/thrift/pull/1496 THRIFT-4476: Typecasting problem on list items (+ low precision double rendering, + mis-rendering non-fractional double literals in Python) - high precision double rendering in JS, Java, Python and C++ - testing double rendering in JS, Java, Python and C++ see the related issue: https://issues.apache.org/jira/browse/THRIFT-4476 You can merge this pull request into a Git repository by running: $ git pull https://github.com/ozymaxx/thrift THRIFT-4476 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/thrift/pull/1496.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #1496 ---- commit f5a6337d4448a30c284a3033307865dfc992ac7d Author: Ozan Can Altiok <ozan@...> Date: 2018-02-19T13:55:09Z - high precision double rendering in JS, Java, Python and C++ - testing double rendering in JS, Java, Python and C++ commit 6dbc35f74fe53a9bacf06867036c21f2761c823e Author: Ozan Can Altiok <ozan@...> Date: 2018-02-22T09:47:27Z - a comment added (about setprecision) - BOOST_TEST -> BOOST_CHECK commit 55e3371ed9ea7eadc5826a7f17d3e432e9b99858 Author: Ozan Can Altiok <ozan@...> Date: 2018-02-23T14:10:15Z double rendering in erlang, fixed (some additional tests added) commit 36cc6f9dfe5b508a531ad70958ca3209c3b65e84 Author: Ozan Can Altiok <ozan@...> Date: 2018-02-23T14:44:31Z less than operator - correction in erlang test commit a22d72f024bbf463895022792a31d04054a79445 Author: Ozan Can Altiok <ozan@...> Date: 2018-02-26T06:17:16Z style changes, some fixes in erlang test commit a615812729096a7fa106f8259eb2f41d61ac99ce Author: Ozan Can Altiok <ozan@...> Date: 2018-02-26T06:51:24Z some fixes in erlang test commit 50b9a3fc69b82a9af2e78602a2e60b9a649874ee Author: Ozan Can Altiok <ozan@...> Date: 2018-02-26T07:22:41Z some fixes in erlang test - no need for including lists library commit b4e9ce56aecf75beffbf77864f02891808072204 Author: Ozan Can Altiok <ozan@...> Date: 2018-02-26T09:31:46Z more style changes - something overlooked commit 39bb546d0ccbec7177866a1a78d9b5f4de0d9ec1 Author: Ozan Can Altiok <ozan@...> Date: 2018-02-26T10:24:45Z expected 2 lines before main - fixed (not seen locally) commit 98db81883af06d10e9277fb32988edfd3f044d1d Author: Ozan Can Altiok <ozan@...> Date: 2018-02-26T11:24:05Z noticed that test cases should be added manually in Python commit 64aae330efac4ee23ed01694bc7dceb5a7a9164b Author: Ozan Can Altiok <ozan@...> Date: 2018-02-27T06:48:48Z DoubleConstantTest thrift compilation directive is now given in generate.cmake commit decb436f40990e0a04be9730accd3becab951c39 Author: Ozan Can Altiok <ozan@...> Date: 2018-02-28T06:13:34Z render_double_to_string -> emit_double_as_string commit e9b2e389b1184efa4d8ad1d6424ec52a108b80c9 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-02T12:45:54Z added assertion error messages to see the problems inside Java tests in more detail commit 248e8a4c208e518da30f761a2d836ff790cd9b0d Author: Ozan Can Altiok <ozan@...> Date: 2018-03-05T06:59:59Z RDP access to AppVeyor build workers commit dd9b65113f143f13e6524917add6c216b16f86e5 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-05T07:01:07Z Merge branch 'master' of https://github.com/apache/thrift into THRIFT-4476 commit 65a6588d049dcbbef7d3df5d7c3ba9a7b141917a Author: Ozan Can Altiok <ozan@...> Date: 2018-03-05T07:03:20Z duplicate key problem in appveyor settings commit 6305384d9203bd532983d18a992515db802b29a5 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-05T09:31:22Z ignore the test cases with (-+)1.7e+308 in Java tests commit 74667acf55c435c661c5fc19de729eb5f82758dc Author: Ozan Can Altiok <ozan@...> Date: 2018-03-05T10:00:31Z ignore the test cases with (-+)1.7e+308 in Java tests - 2 commit 85b872bac39078446aa27336ca57001022524fc0 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-05T12:18:14Z pyflakes8 style changes commit af11ef8c7475c5f57f2d6619bedea23856a0fd17 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T08:21:51Z disabling the test named 'TestRenderedDoubleConstants' on machines with the MSVC2010 configuration commit 8ed1997141dce6c4b4505b09d2d6843344dfa04b Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T08:58:25Z msvc.profile parameter existence check commit beb12744f990ed0890648b07d81f19c121303c59 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T12:05:04Z passing "msvc profile" on build stage commit 1a0756aa8d48b693ae39dd860bdbeb7de5252cae Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T12:50:10Z "MSVC_PROFILE" as a cache variable commit b40fc4e06083f2787db3f805756abe7e6c2c704d Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T13:01:48Z wrong usage of cache variables commit ef43030fd69f1dee060c3cf447acfcceefb4be71 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T13:19:42Z let's see whether the MSVC_PROFILE parameter is passed correctly commit ec32218d28d6054f6fa5148c0d5d24236660afcf Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T13:23:39Z let's see whether the MSVC_PROFILE parameter is passed correctly commit bd1207f29b0662022e46371d1b1cc7be37013151 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T14:03:27Z let's see whether TestRenderedDoubleConstants is excluded or not commit 6c3e243c2afc09d726113ae578b5236e673640ad Author: Ozan Can Altiok <ozan@...> Date: 2018-03-06T14:49:41Z msvc.profile access - fixed commit 201fcb541ae3a5774b509efc5f3d036c85e2495f Author: Ozan Can Altiok <ozan@...> Date: 2018-03-07T06:22:34Z msvc.profile access - fixed commit 788118364ae60781f56779f89b33e90aee116750 Author: Ozan Can Altiok <ozan@...> Date: 2018-03-07T06:27:45Z Merge branch 'master' of https://github.com/apache/thrift into THRIFT-4476 ---- > Typecasting problem on list items > --------------------------------- > > Key: THRIFT-4476 > URL: https://issues.apache.org/jira/browse/THRIFT-4476 > Project: Thrift > Issue Type: Bug > Components: Java - Compiler > Affects Versions: 0.11.0 > Reporter: Ozan Can Altiok > Priority: Major > > I was trying to add the following into a thrift interface file. > {{const list<double> timeCoefficients = [24, 60, 60, 1000, 1000, 1000]}} > With the definition given above the {{.thrift}} file compiled properly. > However, I noticed that in Python, the items in {{timeCoefficients}} are > considered to be integer although the list has been defined to include items > of {{double}} type. Then I modified the definition as given below to make > sure all the items are of type {{double}}. > {{const list<double> timeCoefficients = [24.0, 60.0, 60.0, 1000.0, 1000.0, > 1000.0]}} > After the change, I ran into the following error during compilation. > {{[ERROR] .../TimeCoefficients.java:[402,48] error: no suitable method found > for add(int)}} > {{[ERROR] method Collection.add(Double) is not applicable}} > {{[ERROR] (argument mismatch; int cannot be converted to Double)}} > {{[ERROR] method List.add(Double) is not applicable}} > {{[ERROR] (argument mismatch; int cannot be converted to Double)}} > Next, I changed the line as follows and the compilation became successful. > {{const list<double> timeCoefficients = [24.1, 60.1, 60.1, 1000.1, 1000.1, > 1000.1]}} > When I reviewed the generated Java source files, I discovered that > {{const list<double> timeCoefficients = [24, 60, 60, 1000, 1000, 1000]}} > compiles to > {{public static final java.util.List<java.lang.Double> timeCoefficients = new > java.util.ArrayList<java.lang.Double>();}} > {{static {}} > {{ timeCoefficients.add((double)24);}} > {{ timeCoefficients.add((double)60);}} > {{ timeCoefficients.add((double)60);}} > {{ timeCoefficients.add((double)1000);}} > {{ timeCoefficients.add((double)1000);}} > {{ timeCoefficients.add((double)1000);}} > {{}}} > whilst > {{const list<double> timeCoefficients = [24.0, 60.0, 60.0, 1000.0, 1000.0, > 1000.0]}} > compiles to > {{public static final java.util.List<java.lang.Double> timeCoefficients = new > java.util.ArrayList<java.lang.Double>();}} > {{static {}} > {{ timeCoefficients.add(24);}} > {{ timeCoefficients.add(60);}} > {{ timeCoefficients.add(60);}} > {{ timeCoefficients.add(1000);}} > {{ timeCoefficients.add(1000);}} > {{ timeCoefficients.add(1000);}} > {{}}} > which leads to an error. > When I modified this line as follows > {{const list<double> timeCoefficients = [24.1, 60.1, 60.1, 1000.1, 1000.1, > 1000.1]}} > this line compiled to > {{public static final java.util.List<java.lang.Double> timeCoefficients = new > java.util.ArrayList<java.lang.Double>();}} > {{static {}} > {{ timeCoefficients.add(24.1);}} > {{ timeCoefficients.add(60.1);}} > {{ timeCoefficients.add(60.1);}} > {{ timeCoefficients.add(1000.1);}} > {{ timeCoefficients.add(1000.1);}} > {{ timeCoefficients.add(1000.1);}} > {{}}} > My guess is that, even if I put {{.0}} at the end of each numeric constant, > on the Java side, Thrift compiler considers them to be {{double}} and does no > typecasts. However, the {{.0}} s are getting lost somewhere and the items > become integers in the generated Java code. Thus, when it comes to populating > the array, Java cannot succeed. {{Double}} s cannot be unboxed to integer and > Java thinks {{int}} and {{Double}} are not related. -- This message was sent by Atlassian JIRA (v7.6.3#76005)