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
main() {
Future fun(String m) {
print(m);
// The future returned here could come from other parts of the program.
return new Future.error('unexpected error');
}
bar(fun, 'hello world');
}
Reading the dart specification, this seems correct behavior:
A function type (T1, ..., Tk, ...) → T is a subtype of the function type (S1, ..., Sk+j, ...) → S, if all of the following conditions are met:
Either
S is void,
or T ⇔ S.
But it can cause easily programming errors, where
programmer A assumes that the caller will handle the returned Future
programmer B who does something with the function, assumes it is void
I think this is a case where type systems usually helps users, but not in the case of the dart type system.
It would be very beneficial for our users to get at least a hint in this specific case.
More broadly speaking, it would be beneficial to get hints if a user doesn't act upon a future object it gets from somewhere (neither handles it's value nor it's errors).
The text was updated successfully, but these errors were encountered:
Since the analyzer is going by the spec, and the request is for additional, false-positive-prone analysis, I think this would be a good one for the linter.
The following code does not emit a dartanalyzer error/warning/hint
import 'dart:async';
typedef void VoidReturnType(String msg);
bar(VoidReturnType function, String msg) {
function(msg);
}
main() {
Future fun(String m) {
print(m);
// The future returned here could come from other parts of the program.
return new Future.error('unexpected error');
}
bar(fun, 'hello world');
}
Reading the dart specification, this seems correct behavior:
A function type (T1, ..., Tk, ...) → T is a subtype of the function type (S1, ..., Sk+j, ...) → S, if all of the following conditions are met:
Either
S is void,
or T ⇔ S.
But it can cause easily programming errors, where
I think this is a case where type systems usually helps users, but not in the case of the dart type system.
It would be very beneficial for our users to get at least a hint in this specific case.
More broadly speaking, it would be beneficial to get hints if a user doesn't act upon a future object it gets from somewhere (neither handles it's value nor it's errors).
The text was updated successfully, but these errors were encountered: