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