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

unknown default value for stubs #951

Closed
4 tasks done
lars-reimann opened this issue Mar 29, 2024 · 1 comment · Fixed by #952
Closed
4 tasks done

unknown default value for stubs #951

lars-reimann opened this issue Mar 29, 2024 · 1 comment · Fixed by #952
Assignees
Labels
released Included in a release
Milestone

Comments

@lars-reimann
Copy link
Member

lars-reimann commented Mar 29, 2024

Is your feature request related to a problem?

Sometimes we want to mark a parameter in the stubs as optional, but don't know its exact default value or cannot express it in the language. Here, the exact default values are only provided for documentation anyway.

A possible solution is to make the type nullable and use null as the default value. This, however, also means that the library must accept null there. Moreover, it allows passing null explicitly, which is often not desired.

Desired solution

  • Add a new literal expression unknown.
  • Add a check that this must only be used as the default value of parameters of stubs declarations.
  • Compute its type as Nothing.
  • In the partial evaluator, it should lead to UnknownValue if it occurs in the computation.

Possible alternatives (optional)

No response

Screenshots (optional)

No response

Additional Context (optional)

No response

@lars-reimann lars-reimann self-assigned this Mar 29, 2024
@lars-reimann lars-reimann added this to DSL Mar 29, 2024
@github-project-automation github-project-automation bot moved this to Backlog in DSL Mar 29, 2024
@lars-reimann lars-reimann added this to the v0.9.0 milestone Mar 29, 2024
@lars-reimann lars-reimann moved this from Backlog to Todo in DSL Mar 29, 2024
@lars-reimann lars-reimann linked a pull request Mar 29, 2024 that will close this issue
lars-reimann added a commit that referenced this issue Mar 29, 2024
Closes #951

### Summary of Changes

Add a new literal `unknown` that can be used to mark parameters as
optional if the exact default value of a class/enum variant/function
parameter is unknown. This literal can be used nowhere else.
@github-project-automation github-project-automation bot moved this from Todo to ✔️ Done in DSL Mar 29, 2024
lars-reimann pushed a commit that referenced this issue Apr 1, 2024
## [0.9.0](v0.8.0...v0.9.0) (2024-04-01)

### Features

* `unknown` default value of stub parameters ([#952](#952)) ([78103e3](78103e3)), closes [#951](#951)
* `unknown` type ([#973](#973)) ([4638249](4638249)), closes [#967](#967)
* add constraints to stubs ([#953](#953)) ([dc5bf3b](dc5bf3b))
* allow any widening/narrowing type cast ([#948](#948)) ([ce01628](ce01628))
* checking of parameter bounds ([#925](#925)) ([610604f](610604f)), closes [#18](#18)
* Markdown documentation generator ([#963](#963)) ([77d04de](77d04de)), closes [#663](#663)
* stubs for `safe-ds` library ([#950](#950)) ([155b1c0](155b1c0)), closes [#926](#926)
* VS Code command to dump diagnostics into a JSON file ([#928](#928)) ([34fa884](34fa884)), closes [#927](#927)

### Bug Fixes

* do not memoize calls containing lambdas calling segments ([#944](#944)) ([114fee6](114fee6))
* language server crash on startup ([#947](#947)) ([9923074](9923074)), closes [#945](#945)
* type checking of two union types ([#949](#949)) ([21fc485](21fc485))
@lars-reimann
Copy link
Member Author

🎉 This issue has been resolved in version 0.9.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@lars-reimann lars-reimann added the released Included in a release label Apr 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
released Included in a release
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

1 participant