Skip to content
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

Allow (multi_value : Table) : Column to succeed #11482

Open
JaroslavTulach opened this issue Nov 4, 2024 · 14 comments · May be fixed by #11600
Open

Allow (multi_value : Table) : Column to succeed #11482

JaroslavTulach opened this issue Nov 4, 2024 · 14 comments · May be fixed by #11600
Assignees

Comments

@JaroslavTulach
Copy link
Member

The decision to support

and especially handle the Treat single column Table as a Column request, we are going to use multi values representing multiple types at once.

Multi value & type check

When the library code needs, it can create a multi value representing both Table and Column at once. However, when there is a return value check like -> Table - such a value would be converted to just a table. That shall no longer be the case - we need multi values to pass thru. A solution for this has already been provided once:

However such a solution worked poorly with potential static analysis.

Solution

The goal of this PR is to split the intersection type of an EnsoMultiValue into two parts:

  • the type checked one - a list of types whose methods are made available
  • the convertible one - a set of types this value can be converted ("cast") to
@enso-bot
Copy link

enso-bot bot commented Nov 12, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-11):

Progress: .

Next Day: Being at javadays.cz conference

@enso-bot
Copy link

enso-bot bot commented Nov 13, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-12):

Progress: .

Next Day: Next day I will be working on the #11482 task. Delivering Enso talk at javadays.cz conference

@enso-bot
Copy link

enso-bot bot commented Nov 14, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-13):

Progress: .

  • presentation about Enso at JavaDays.cz
  • everybody impressed
  • everybody loves the UI.
  • 2 people would like to design a pipeline for their Java library in the IDE
  • they want to call the resulting program from their Java program
  • some want to find duplicities in Excel sheets - e.g. expert Excel users It should be finished by 2024-11-18.

Next Day: Next day I will be working on the #11482 task. Back to work

@enso-bot
Copy link

enso-bot bot commented Nov 15, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-14):

Progress: .

Next Day: Finish type check refactoring, then up to

GitHub
Blocks #11468 Pull Request Description This PR implements the Truffle contract that all the Enso objects must export hasLanguage and getLanguage messages. By refactoring EnsoObject from an interfac...

@enso-bot
Copy link

enso-bot bot commented Nov 16, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-15):

Progress: .

GitHub
Blocks #11468 Pull Request Description This PR implements the Truffle contract that all the Enso objects must export hasLanguage and getLanguage messages. By refactoring EnsoObject from an interfac...

@enso-bot
Copy link

enso-bot bot commented Nov 19, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-18):

Progress: .

mergify bot pushed a commit that referenced this issue Nov 19, 2024
While working on #11482 and enhancing the tests suite with more tests based on `type Complex` a [getRootNode() did not terminate in 100000 iterations](#11525 (comment)) 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`.
@enso-bot
Copy link

enso-bot bot commented Nov 21, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-20):

Progress: .

Discord
Discord is great for playing games and chilling with friends, or even building a worldwide community. Customize your own space to talk, play, and hang out.

somebody1234 pushed a commit that referenced this issue Nov 21, 2024
While working on #11482 and enhancing the tests suite with more tests based on `type Complex` a [getRootNode() did not terminate in 100000 iterations](#11525 (comment)) 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`.
@enso-bot
Copy link

enso-bot bot commented Nov 22, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-21):

Progress: .

GitHub
Pull Request Description To help address #11481 and to simplify extracting of type information from EnsoMultiValue, let's enrich the public method API of TypeOfNode and then enhance it to allow...

@enso-bot
Copy link

enso-bot bot commented Nov 23, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-22):

Progress: .

GitHub
Enso Analytics is a self-service data prep and analysis platform designed for data teams. - Pull requests · enso-org/enso

mergify bot pushed a commit that referenced this issue Nov 25, 2024
Another step in the #11482 work. Avoid accessing internals of `EnsoMultiValue`. Use `TypeOfNode` methods (as provided by #11618) instead.
@enso-bot
Copy link

enso-bot bot commented Nov 26, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-25):

Progress: .

hubertp pushed a commit that referenced this issue Nov 26, 2024
Another step in the #11482 work. Avoid accessing internals of `EnsoMultiValue`. Use `TypeOfNode` methods (as provided by #11618) instead.
@JaroslavTulach JaroslavTulach linked a pull request Nov 27, 2024 that will close this issue
4 tasks
@enso-bot
Copy link

enso-bot bot commented Nov 28, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-27):

Progress: .

GitHub
This uses #11577. It creates a reference to a value that is cleared on reload; this change detects this, and clears the cache. Checklist Please ensure that the following checklist has been satisfie...
GitHub
Closes #11326 Pull Request Description Mega passes converted to minipasses in Passes.globalTypingPasses group:
  enso/engine/runtime-compiler/src/main/scala/org/enso/compiler/Passes.s...</div></blockquote>

@enso-bot
Copy link

enso-bot bot commented Nov 29, 2024

Jaroslav Tulach reports a new STANDUP for yesterday (2024-11-28):

Progress: .

GitHub
Pull Request Description Allows connection between refresh button and caches as requested by #11485:

please use Managed_Resource.new system_resource=True to create a reference that "can disap...

@enso-bot
Copy link

enso-bot bot commented Nov 29, 2024

Jaroslav Tulach reports a new STANDUP for today (2024-11-29):

Progress: .

Discord
Discord is great for playing games and chilling with friends, or even building a worldwide community. Customize your own space to talk, play, and hang out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 👁️ Code review
Development

Successfully merging a pull request may close this issue.

1 participant