You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
effect violations (raises, gcsafe, side-effects etc) should give warnRaiseMismatch, warnGcsafeMismatch, warnSideEffectMismatch instead of error, rationale:
you can't overload by effect anyways (which is a good thing)
you can still get errors exactly as before, by using warningAsError, but it gives you more control when needed
it removes a lot of friction caused by the viral-ness of effects; oftentimes the violation is only theoretical (eg if a RT condition which would trigger can be assumed by user not to happen) and user can decide whether they're ok with this violation, on a granular basis
this would significantly reduce impact of breaking changes for correctness bugfixes, eg if we discover that in some situation, a raise OsError can happen (eg getcwd can raise in rare conditions and a call now needs getcwd which adds a raise[OsError]), it wouldn't cause a CT error but instead a warnining (which can be turned into a CT error depending on warnaserror); it basically makes code evolution easier, and smooths the upgrade process of a new version of compiler/library.
effect violations (raises, gcsafe, side-effects etc) should give warnRaiseMismatch, warnGcsafeMismatch, warnSideEffectMismatch instead of error, rationale:
this would significantly reduce impact of breaking changes for correctness bugfixes, eg if we discover that in some situation, a raise OsError can happen (eg getcwd can raise in rare conditions and a call now needs getcwd which adds a raise[OsError]), it wouldn't cause a CT error but instead a warnining (which can be turned into a CT error depending on warnaserror); it basically makes code evolution easier, and smooths the upgrade process of a new version of compiler/library.
Viral errors = bad; viral warnings = bearable
links
The text was updated successfully, but these errors were encountered: