mirror of
https://github.com/enso-org/enso.git
synced 2024-12-23 02:21:54 +03:00
3d8a0e1b90
While working on #11482 and enhancing the tests suite with more tests based on `type Complex` a [getRootNode() did not terminate in 100000 iterations](https://github.com/enso-org/enso/pull/11525#issuecomment-2476171597) problem was discovered. Detailed investigation revealed that the existing `ReadArgumentCheckNode` infrastructure was able to create a **cycle** of parent pointers in the Truffle AST. The problem was in intricate manipulation of the AST while rewriting internals in `ReadArgumentCheckNode`. This PR avoids such manipulation by _refactoring the type checking code_. `ReadArgumentNode` knows nothing about types anymore. When a type check is needed, `IrToTruffle` adds additional `TypeCheckValueNode.wrap` around the `ReadArgumentNode` - that breaks the **vicious circle**. All the _type checks_ nodes are moved to its own package. All but one of the classes are made package private. The external API for doing _type checking_ is concentrated into `TypeCheckValueNode`. |
||
---|---|---|
.. | ||
AWS_Tests | ||
Base_Internal_Tests | ||
Base_Tests | ||
Benchmarks | ||
Examples_Tests | ||
Exploratory_Benchmarks | ||
Geo_Tests | ||
Google_Api_Test | ||
Helpers | ||
Image_Tests | ||
micro-distribution | ||
Microsoft_Tests | ||
Snowflake_Tests | ||
Table_Tests | ||
Tableau_Tests | ||
Visualization_Tests |