Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix node2code for array indexing expressions #12805

Merged
merged 6 commits into from
Apr 18, 2022

Conversation

aparajit-pratap
Copy link
Contributor

@aparajit-pratap aparajit-pratap commented Apr 14, 2022

Please Note:

  1. Before submitting the PR, please review How to Contribute to Dynamo
  2. Dynamo Team will meet 1x a month to review PRs found on Github (Issues will be handled separately)
  3. PRs will be reviewed from oldest to newest
  4. If a reviewed PR requires changes by the owner, the owner of the PR has 30 days to respond. If the PR has seen no activity by the next session, it will be either closed by the team or depending on its utility will be taken over by someone on the team
  5. PRs should use either Dynamo's default PR template or one of these other template options in order to be considered for review.
  6. PRs that do not have one of the Dynamo PR templates completely filled out with all declarations satisfied will not be reviewed by the Dynamo team.
  7. PRs made to the DynamoRevit repo will need to be cherry-picked into all the DynamoRevit Release branches that Dynamo supports. Contributors will be responsible for cherry-picking their reviewed commits to the other branches after a LGTM label is added to the PR.

Purpose

Fixes node2code for array indexing expressions. Previously n2c would transform an array indexing expression to this:

arr[2]; => DesignScript.BuiltIn.Get.ValueAtIndex(arr, 2);

Even though behind the scenes this transformation is necessary to invoke the ZT function, for the user it doesn't make sense when they are trying to understand the DesignScript in the resulting code block. After this change, it doesn't transform such expressions to the ZT function call in the backend anymore. This also prevents a crash from occurring when more complex expressions such as this were transformed:

p[2].DistanceTo(p[3]); => DesignScript.BuiltIn.Get.ValueAtIndex(p, 2).DistanceTo(DesignScript.BuiltIn.Get.ValueAtIndex(p, 3));

Future TODOs:

  • The same issue exists for other cases, where the conversion to the backend function call can be avoided, for example, dictionary expressions:
{string_exp1 : exp2} => DesignScript.Builtin.Dictionary.ByKeysValues([string_exp1], [exp2]);
  • Similar expressions in Imperative blocks still convert to backend function calls

Declarations

Check these if you believe they are true

  • The codebase is in a better state after this PR
  • Is documented according to the standards
  • The level of testing this PR includes is appropriate
  • User facing strings, if any, are extracted into *.resx files
  • All tests pass using the self-service CI.
  • Snapshot of UI changes, if any.
  • Changes to the API follow Semantic Versioning and are documented in the API Changes document.
  • This PR modifies some build requirements and the readme is updated

Release Notes

Fixes Node To Code for list indexing expressions.

Reviewers

(FILL ME IN) Reviewer 1 (If possible, assign the Reviewer for the PR)

(FILL ME IN, optional) Any additional notes to reviewers or testers.

FYIs

(FILL ME IN, Optional) Names of anyone else you wish to be notified of

@aparajit-pratap aparajit-pratap merged commit 48a91ed into DynamoDS:master Apr 18, 2022
@aparajit-pratap aparajit-pratap deleted the dyn-4720 branch April 18, 2022 20:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants