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
feat(ivy): graceful evaluation of unknown or invalid expressions #33453
Conversation
} | ||
if (rhs < 0 || rhs >= lhs.length) { | ||
throw new Error(`Index out of bounds: ${rhs} vs ${lhs.length}`); | ||
return undefined; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe just remove this if
block?
packages/compiler-cli/src/ngtsc/partial_evaluator/src/dynamic.ts
Outdated
Show resolved
Hide resolved
packages/compiler-cli/src/ngtsc/partial_evaluator/src/dynamic.ts
Outdated
Show resolved
Hide resolved
During static evaluation of expressions within ngtsc, it may occur that certain expressions or just parts thereof cannot be statically interpreted for some reason. The static interpreter keeps track of the failure reason and the code path that was evaluated by means of `DynamicValue`, which will allow descriptive errors. In some situations however, the static interpreter would throw an exception instead, resulting in a crash of the compilation. Not only does this cause non-descriptive errors, more importantly does it prevent the evaluated result from being partial, i.e. parts of the result can be dynamic if their value does not have to be statically available to the compiler. This commit refactors the static interpreter to never throw errors for certain expressions that it cannot evaluate. Resolves FW-1582
a4ef480
to
737fa0f
Compare
) During static evaluation of expressions within ngtsc, it may occur that certain expressions or just parts thereof cannot be statically interpreted for some reason. The static interpreter keeps track of the failure reason and the code path that was evaluated by means of `DynamicValue`, which will allow descriptive errors. In some situations however, the static interpreter would throw an exception instead, resulting in a crash of the compilation. Not only does this cause non-descriptive errors, more importantly does it prevent the evaluated result from being partial, i.e. parts of the result can be dynamic if their value does not have to be statically available to the compiler. This commit refactors the static interpreter to never throw errors for certain expressions that it cannot evaluate. Resolves FW-1582 PR Close #33453
…ular#33453) During static evaluation of expressions within ngtsc, it may occur that certain expressions or just parts thereof cannot be statically interpreted for some reason. The static interpreter keeps track of the failure reason and the code path that was evaluated by means of `DynamicValue`, which will allow descriptive errors. In some situations however, the static interpreter would throw an exception instead, resulting in a crash of the compilation. Not only does this cause non-descriptive errors, more importantly does it prevent the evaluated result from being partial, i.e. parts of the result can be dynamic if their value does not have to be statically available to the compiler. This commit refactors the static interpreter to never throw errors for certain expressions that it cannot evaluate. Resolves FW-1582 PR Close angular#33453
…ular#33453) During static evaluation of expressions within ngtsc, it may occur that certain expressions or just parts thereof cannot be statically interpreted for some reason. The static interpreter keeps track of the failure reason and the code path that was evaluated by means of `DynamicValue`, which will allow descriptive errors. In some situations however, the static interpreter would throw an exception instead, resulting in a crash of the compilation. Not only does this cause non-descriptive errors, more importantly does it prevent the evaluated result from being partial, i.e. parts of the result can be dynamic if their value does not have to be statically available to the compiler. This commit refactors the static interpreter to never throw errors for certain expressions that it cannot evaluate. Resolves FW-1582 PR Close angular#33453
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
During static evaluation of expressions within ngtsc, it may occur that
certain expressions or just parts thereof cannot be statically
interpreted for some reason. The static interpreter keeps track of the
failure reason and the code path that was evaluated by means of
DynamicValue
, which will allow descriptive errors. In some situationshowever, the static interpreter would throw an exception instead,
resulting in a crash of the compilation. Not only does this cause
non-descriptive errors, more importantly does it prevent the evaluated
result from being partial, i.e. parts of the result can be dynamic if
their value does not have to be statically available to the compiler.
This commit refactors the static interpreter to never throw errors for
certain expressions that it cannot evaluate.
Resolves FW-1582