8d3365e4fc
Currently we always just set the timing to `false` if we aren't able to analyze a given call expression or new expression. e.g. ```ts ngOnInit() { thirdPartyCallSync(() => this.query.doSomething()) } ``` In that case the `thirdPartyCallSync` function comes from the `node_modules` and is only defined through types while there is no code for the actual function logic that can be analyzed. This makes it impossible to tell whether the given call expression actually causes the specified arrow function to be executed synchronously or not. In order to be able to make this better, we now peek into the passed arrow function and check for a synchronous query usage. If so, we set the query timing to static and mark it as ambiguous. This ensures that the usage strategy is less "magical" and more correct with third-party code. Additionally since functions like `setTimeout` are not analyzable but known to be asynchronous, there is a hard-coded list of known functions which shouldn't be marked as ambiguous. Resolves FW-1214. As planned within https://hackmd.io/hPiLWpPlQ4uynC1luIBdfQ PR Close #30215 |
||
---|---|---|
.. | ||
google3 | ||
BUILD.bazel | ||
injectable_pipe_migration_spec.ts | ||
line_mappings_spec.ts | ||
move_document_migration_spec.ts | ||
project_tsconfig_paths_spec.ts | ||
static_queries_migration_template_spec.ts | ||
static_queries_migration_usage_spec.ts | ||
template_var_assignment_migration_spec.ts | ||
test-migrations.json |