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

Improve support for loops and collection access in TemplateAnalysis #1999

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

copybara-service[bot]
Copy link

Improve support for loops and collection access in TemplateAnalysis

Some collection expressions in soy are guaranteed to never include futures, notably anything returned from a proto or various builtin functions/methods syntax structures, we can take advantage of that to eliminate runtime doneness checks. This generalizes the logic for ranges to apply to things like

{for $v in $proto.getFooList()}
  {$v} // doesn't need to be checked. 
{/for}

This is accomplished by analyzing the source of values, if they come from a known resolved source, then we know that accessing them will return a resolved value.

Some collection expressions in soy are guaranteed to never include futures, notably anything returned from a proto or various builtin functions/methods syntax structures, we can take advantage of that to eliminate runtime doneness checks.  This generalizes the logic for ranges to apply to things like

```
{for $v in $proto.getFooList()}
  {$v} // doesn't need to be checked.
{/for}
```

This is accomplished by analyzing the source of values, if they come from a known resolved source, then we know that accessing them will return a resolved value.

PiperOrigin-RevId: 632631730
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.

1 participant