-
-
Notifications
You must be signed in to change notification settings - Fork 415
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
Fix for crash when methods with default private type params in remote packages are called #4167
Commits on Jul 27, 2022
-
Fix for crash involving the use of private types used as default values
This attempts to fix issues ponylang#4130 and ponylang#4153. The issue was when a private type in another package was used as a default value in a method call. Fix to ponylang#4130 Since it has been decided to treat this as a bug instead of a missing error, this PR implements the fix suggested by @ergl, namely using `lookup_try()` instead of lookup() in call.c's `check_partial_function_call()` since it allows to permit private types. Fix to ponylang#4153 This is also a simply fix to lookup.c that prevents a potential segfault by a dereferencing of `opt` (`typecheck_t* t = &opt->check;`) *before* `opt != NULL` was checked. As pointed out by @SeanTAllen, opt should not be NULL to begin with when lookup_nominal is called, and instead, an assert should be added and the NULL checks in that function removed.
Configuration menu - View commit details
-
Copy full SHA for 527864d - Browse repository at this point
Copy the full SHA 527864dView commit details -
Revert "Fix for crash involving the use of private types used as defa…
…ult values" This reverts commit 527864d.
Configuration menu - View commit details
-
Copy full SHA for 0eae6ef - Browse repository at this point
Copy the full SHA 0eae6efView commit details -
Fix for crash involving the use of private types used as default values
This attempts to fix ponylang#4130 This crash stems from the use of a private type as defined in another package when it was used as a default value in a method call. Since it has been decided to treat this as a bug instead of a missing error, this PR implements the fix suggested by @ergl, namely using `lookup_try()` instead of lookup() in call.c's `check_partial_function_call()` since the former can be configured to permit private types. Fix to ponylang#4153 This is a simply change to `lookup_nominal()` in lookup.c that prevents a potential segfault by a dereferencing of `opt` (`typecheck_t* t = &opt->check;`) *before* `opt != NULL` was checked. As pointed out by @SeanTAllen, opt should not be NULL to begin with when `lookup_nominal()` is called, and instead, an assert should be added and the NULL checks in that function removed. With this PR, the two examples below that crashed the compiler now both compile: Original example: ```pony // inside the "useful" package primitive _PrivateDefault actor Useful[A: Any val] fun tag config(value: (A | _PrivateDefault) = _PrivateDefault): Useful[A] => this // inside "main" use "useful" primitive This primitive That type Stuff is (This | That) actor Main new create(env: Env) => let u = Useful[Stuff].config() ``` Minimal example: ```pony // In the "lib" pacakge primitive _Private primitive Public fun apply[T](v: (T | _Private) = _Private): None => None // In main use lib = "lib" actor Main new create(env: Env) => let p = lib.Public.apply[U8]() env.out.print(p.string()) ```
Configuration menu - View commit details
-
Copy full SHA for 7c18b7f - Browse repository at this point
Copy the full SHA 7c18b7fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6391765 - Browse repository at this point
Copy the full SHA 6391765View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5fd6c26 - Browse repository at this point
Copy the full SHA 5fd6c26View commit details
Commits on Jul 28, 2022
-
Update test/libponyc-run/private-type-as-default-argument-in-public-f…
…unction/main.pony Co-authored-by: Borja o'Cook <ergl@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for cb3b960 - Browse repository at this point
Copy the full SHA cb3b960View commit details
Commits on Jul 30, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 323e371 - Browse repository at this point
Copy the full SHA 323e371View commit details -
Configuration menu - View commit details
-
Copy full SHA for 08de6f7 - Browse repository at this point
Copy the full SHA 08de6f7View commit details