-
Notifications
You must be signed in to change notification settings - Fork 25
Improve error message for using floats in contracts #198
Copy link
Copy link
Open
Labels
[Type] Change RequestSome visible functionality should be change.Some visible functionality should be change.
Description
Description
Floating-point numbers are not supported in smart contracts, but if you don't know that and you try to use them (or you use a library that uses floats), the error message when building with cargo concordium is very cryptic.
Steps to Reproduce
- Use floating-point numbers in your contract.
Make sure that the compiler doesn't optimize the floats away.
Something like this worked for me with 1.53.0:fn g() { if f(f(1.)) < 2. { println!("hello"); } } #[inline(never)] fn f(x: f64) -> f64 { if x < 1. { x + 1. } else { x + 2. } }
- Compile the contract with
cargo concordium build
Expected Result
An error message saying: Floating point numbers are not allowed.
Actual Result
Error: Could not build smart contract.
Caused by:
0: Could not validate resulting smart contract module as a V1 contract.
1: Unknown value type byte 0x7c
(0x7c is the encoding of the f64 type in https://webassembly.github.io/spec/core/binary/types.html#number-types.)
Versions
- Software Version: cargo concordium v. 2.0.0
- OS: macOS
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
[Type] Change RequestSome visible functionality should be change.Some visible functionality should be change.