Fixing small bugs uncovered by type checker (#11422)

Once our libraries and tests are compiled with basic inference of method types, some warnings were reported:
```
X:\NBO\enso\built-distribution\enso-engine-0.0.0-dev-windows-amd64\enso-0.0.0-dev\lib\Standard\Database\0.0.0-dev\src\DB_Column.enso:1003:19: warning: Calling member method `div` on type Number will result in a No_Such_Method error in runtime.
1003 |         halfway = scale.div 2
|                   ^~~~~~~~~~~
X:\NBO\enso\built-distribution\enso-engine-0.0.0-dev-windows-amd64\enso-0.0.0-dev\lib\Standard\Image\0.0.0-dev\src\Matrix.enso:381:21: warning: Invoking a value that has a non-function type (type Image) will result in a Not_Invokable error in runtime.
381 |     to_image self = Image (Image.from_vector self.normalize.to_vector self.rows self.channels)
|                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X:\NBO\enso\built-distribution\enso-engine-0.0.0-dev-windows-amd64\enso-0.0.0-dev\lib\Standard\Table\0.0.0-dev\src\Internal\Multi_Value_Key.enso:94:22: warning: Calling static method `new` on (type Illegal_State) will result in a No_Such_Method error in runtime.
94 |         Error.throw (Illegal_State.new "Ordered_Multi_Value_Key is not intended for usage in unordered collections.")
|                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

This PR attempts to fix them.

There was also an expected error in the Examples:
```
X:\NBO\enso\built-distribution\enso-engine-0.0.0-dev-windows-amd64\enso-0.0.0-dev\lib\Standard\Examples\0.0.0-dev\src\Main.enso:139:36: warning: Calling static method `frobnicate` on (type No_Methods) will result in a No_Such_Method error in runtime.
139 | no_such_method = Panic.recover Any No_Methods.frobnicate . catch
|                                    ^~~~~~~~~~~~~~~~~~~~~
```
To avoid getting a warning, I wrapped this in `(_ : Any)` to make the warning go away. The behaviour of the function is unchanged.
This commit is contained in:
Radosław Waśko 2024-10-31 13:49:50 +01:00 committed by GitHub
parent fdab2233ac
commit cf5326fbd1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 11 additions and 5 deletions

View File

@ -999,7 +999,10 @@ type DB_Column
round_integer : Integer -> Boolean -> DB_Column
round_integer self decimal_places use_bankers =
new_name = self.naming_helper.function_name "round" [self]
scale = 10 ^ -decimal_places
Runtime.assert (decimal_places <= 0)
## We assert that the decimal_places is non-positive, so the scale will be an Integer.
We can tell that to the type-checker by adding an annotation.
scale = (10 ^ -decimal_places) : Integer
halfway = scale.div 2
remainder = self % scale
remainder.let "remainer" remainder->

View File

@ -136,7 +136,11 @@ type No_Methods
## Returns a no_such_method_error as a value.
no_such_method : No_Such_Method
no_such_method = Panic.recover Any No_Methods.frobnicate . catch
no_such_method =
## We expect a No_Such_Method error here, so we annotate the type with `Any`
to avoid getting the warning from the static type checker.
no_methods_as_any = No_Methods : Any
Panic.recover Any no_methods_as_any.frobnicate . catch
## A simple error type for example purposes.
type My_Error

View File

@ -378,7 +378,7 @@ type Matrix
example_to_image = Examples.matrix.to_image
to_image : Image
to_image self = Image (Image.from_vector self.normalize.to_vector self.rows self.channels)
to_image self = Image.from_vector self.normalize.to_vector self.rows self.channels
## GROUP Standard.Base.Conversions
ICON convert

View File

@ -91,7 +91,7 @@ type Ordered_Multi_Value_Key_Comparator
## PRIVATE
hash x =
_ = [x]
Error.throw (Illegal_State.new "Ordered_Multi_Value_Key is not intended for usage in unordered collections.")
Error.throw (Illegal_State.Value "Ordered_Multi_Value_Key is not intended for usage in unordered collections.")
## PRIVATE
Comparable.from (that:Ordered_Multi_Value_Key) = Comparable.new that Ordered_Multi_Value_Key_Comparator

View File

@ -123,4 +123,3 @@ main filter=Nothing =
suite = Test.build suite_builder->
add_specs suite_builder
suite.run_with_filter filter