Handle complex calculator results (#47506)
## Summary of the Pull Request Return a friendly calculator error when Mages evaluates an expression to a complex number instead of letting decimal conversion throw. This fixes the PowerToys Run Calculator result for expressions such as `sqrt(-1)` by detecting `System.Numerics.Complex` results before decimal conversion and showing a localized error message instead. Fixes #43937 ## PR Checklist - [x] Closes: #43937 - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass - [x] **Localization:** All end-user-facing strings can be localized - [x] **Dev docs:** Added/updated - [x] **New binaries:** Added on the required places - [x] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [x] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [x] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [x] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [x] **Documentation updated:** Not required for this bug fix. ## Detailed Description of the Pull Request / Additional comments The Calculator plugin previously passed complex results from Mages into `Convert.ToDecimal`, which caused an exception for expressions like `sqrt(-1)`. This PR updates the calculator result transformation logic to detect `System.Numerics.Complex` and return a localized user-facing error message: `Complex numbers are not supported`. It also updates calculator query tests to cover both direct keyword and global query behavior. ## Validation Steps Performed - Added unit test coverage for `=sqrt(-1)` returning `Complex numbers are not supported`. - Added unit test coverage for global query `sqrt(-1)` returning no result instead of surfacing an unhandled exception. - Ran `git diff --check`. - Attempted local build/test with the PowerToys build scripts, but local validation was blocked by Visual Studio/VC tooling configuration issues unrelated to this change: `PlatformToolsetVersion` resolves to an empty value during restore/build.
E
Eymard Silva committed
c46083dd8d6012f76ab328fabcb1a4d17cf135aa
Parent: 65112a7
Committed by GitHub <noreply@github.com>
on 5/28/2026, 7:06:22 AM