Strange behavior in nested objects with optimistic types set to true

Vivin Suresh Paliath vivin.paliath at gmail.com
Thu Sep 29 18:28:22 UTC 2016


Thanks!

On Thu, Sep 29, 2016 at 5:40 AM, Hannes Wallnöfer <
hannes.wallnoefer at oracle.com> wrote:

> 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>]*
>
>


-- 
*[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