Strange behavior in nested objects with optimistic types set to true

Hannes Wallnöfer hannes.wallnoefer at oracle.com
Thu Sep 29 12:40:15 UTC 2016


Thanks for the report, Vivin,

I’ve filed a bug and am looking into this.

https://bugs.openjdk.java.net/browse/JDK-8166902

Hannes

> Am 27.09.2016 um 19:08 schrieb Vivin Suresh Paliath <vivin.paliath at gmail.com>:
> 
> This is on JDK 8u102. We're seeing strange behavior where certain certain
> properties on objects get set to zero. Here's the script:
> 
> var config = {};
> 
> var creativeDetails = {
>    fanpage_id: config.fanpage_id || "293867224112667",
>    image_url: config.image_url || "http://some.url",
>    title: config.title || "Ad Title",
>    description: config.description || "Ad Description",
>    link_description: config.link_description || "Link Description",
>    call_to_action: config.call_to_action || "LEARN_MORE",
>    destination_url: "http:/some.url",
>    link_body: config.link_body || "Link Body"
> };
> 
> var linkData = {
>    call_to_action: {
>        type: creativeDetails.call_to_action,
>        value:{
>            link_caption: creativeDetails.link_description,
>            link: creativeDetails.destination_url
>        }
>    },
>    link: creativeDetails.destination_url,
>    picture: creativeDetails.image_url,
>    message: creativeDetails.description,
>    name: creativeDetails.title
> };
> 
> print(JSON.stringify(linkData, null, 4) + "\n");
> 
> Running this with jjs without any arguments gives:
> 
> {
>    "call_to_action": {
>        "type": "LEARN_MORE",
>        "value": {
>            "link_caption": "Link Description",
>            "link": "https://hosted-form-service.sbsp.io/"
>        }
>    },
>    "link": "https://hosted-form-service.sbsp.io/",
>    "picture": "
> http://res.cloudinary.com/infusionsoft/image/upload/v1474490027/1913264_293881764111213_2626449405773452232_o_gxgeoe.png
> ",
>    "message": "Ad Description",
>    "name": "Ad Title"
> }
> 
> Whereas running it with jjs --optimistic-types=true gives:
> 
> {
>    "call_to_action": {
>        "type": "LEARN_MORE",
>        "value": {
>            "link_caption": "Link Description",
>            "link": "https://hosted-form-service.sbsp.io/"
>        }
>    },
>    "link": 0,
>    "picture": 0,
>    "message": 0,
>    "name": 0
> }
> 
> Changing the || expressions to ternaries didn't change the behavior.
> However, referencing a property of the creativeDetails object in any manner
> (e.g., assigning it to another variable or printing it out) before
> initializing the linkData object, ends up printing out the expected result.
> 
> The strange thing is that the nested object gets the right values, but the
> outer object does not. This behavior only shows up if you are using the
> problematic object's properties to initialize the properties of a nested
> object. For example, the following code does not cause the issue:
> 
> var linkData = {
>    link: creativeDetails.destination_url,
>    picture: creativeDetails.image_url,
>    message: creativeDetails.description,
>    name: creativeDetails.title
> };
> 
> 
> -- 
> *[vivin.net <http://vivin.net> :: github <http://github.com/vivin> ::
> linkedin <https://www.linkedin.com/in/vivin>]*



More information about the nashorn-dev mailing list