-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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 new calls to classes with factories #2272
Comments
This sounds reasonable, though we need to think carefully. One of the advantages of factory constructors is that the user of the constructor can be oblivious to whether the constructor is a generative constructor or a factory. Does having a special allowance jeopardize that invariant? It seems not, because if the factory was to replaced with a generative constructor, the class would cease to be abstract. Added Accepted label. |
This comment was originally written by @seaneagan similarly, how about allowing default implementations of abstract classes as is allowed with interfaces: abstract class Abstract default NonAbstract { ... |
Sean, please file that as a separate issue. |
The 0.09 draft addresses this problem in sections 10.10.1 and 10.10.2. Added Done label. |
Revisions updated by `dart tools/rev_sdk_deps.dart`. lints (https://github.com/dart-lang/lints/compare/2cf8403..5c60f48): 5c60f48 2023-10-30 Michael Goderbauer Update README.md to use new syntax for adding dev dependencies (#167) mockito (https://github.com/dart-lang/mockito/compare/4edf86f..b7d752e): b7d752e 2023-10-26 Ilya Yanok Use Dart SDK 3.1.0 for format check ca537db 2023-10-26 Ilya Yanok Remove unneeded deprecation warning disable comment 1a0d0e7 2023-10-26 Ilya Yanok Remove deprecated `returnNullOnMissingStub` and `OnMissingStub.returnNull` native (https://github.com/dart-lang/native/compare/757f503..279094d): 279094d 2023-10-30 Pierrick Bouvier [native_toolchain_c] Support MSVC arm64 toolchain (#167) 9629a55 2023-10-27 Parker Lougheed Allow modification of a BuildOutput's raw dependencies (#169) 762b4da 2023-10-27 Ryan Macnak [native_assets_cli] Add Android RISCV64 target. (#166) 18bff8c 2023-10-25 Ryan Macnak [native_toolchain_c] Setup Linux X64 toolchain for non-X64 hosts. (#164) d79a7cd 2023-10-25 Ryan Macnak [native_toolchain_c] Setup Linux RISCV64 toolchain. (#163) ce26f75 2023-10-25 Parker Lougheed Update all lints and dart_flutter_team_lints dependencies (#161) protobuf (https://github.com/dart-lang/protobuf/compare/3528fad..3f567b2): 3f567b2 2023-10-27 Ömer Sinan Ağacan Remove the dynamic call in `CodedBufferWriter` (#895) 42436cd 2023-10-26 Ömer Sinan Ağacan Keep a `ByteData` around in `CodedBufferReader` to avoid repeated `ByteData` allocs (#890) 9a73936 2023-10-26 Ömer Sinan Ağacan Avoid adding empty splices in `CodedBufferWriter` (#886) 23dffde 2023-10-26 Ömer Sinan Ağacan Update a bug link in a comment (#892) 19903f0 2023-10-26 Ömer Sinan Ağacan Make `CodedBufferWriter.writeRawByte` argument type more accurate (#891) 2ce3e14 2023-10-26 Ömer Sinan Ağacan Update `FieldInfo._ensureRepeatedField` return type (#893) e146515 2023-10-25 Ömer Sinan Ağacan Avoid redundant ByteData allocation when decoding sfixed64 (#889) 1b1d549 2023-10-25 Ömer Sinan Ağacan Avoid allocating temporary views in when decoding strings in `CodedBufferReader` (#888) tools (https://github.com/dart-lang/tools/compare/da6bb18..e828d45): e828d45 2023-10-27 Elias Yishak Create tests for each event constructor (#186) webdev (https://github.com/dart-lang/webdev/compare/25f17cd..50534a1): 50534a12 2023-10-30 Elliott Brooks Cider passes an app ID instead of a workspace name to connect to the Dart Debug Extension (#2272) b3d6ef14 2023-10-27 Elliott Brooks Expose a keyboard shortcut to copy the Dart app ID (#2271) c26b4e5f 2023-10-27 Elliott Brooks Reset Webdev to 3.3.0-wip after release (#2269) 982b955b 2023-10-26 Elliott Brooks Prepare webdev for 3.2.0 (#2268) 62361fbf 2023-10-26 Elliott Brooks Reset DWDS after release (#2267) 50b8ae86 2023-10-26 Elliott Brooks Prepare DWDS for release to version 22.1.0 (#2266) Change-Id: Ia02db3bc66bac55b637ed5e173fe5c5d50bcca52 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/332748 Auto-Submit: Devon Carew <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
Currently it is not allowed (static warning) to 'new' a class that is abstract. This holds, even if the invoked constructor is a factory that in turn invokes non-abstract classes.
It would be convenient if this restriction would be lifted.
In the following example the Boolean class is abstract, but the factory instantiates non-abstract classes.
===
class Boolean {
factory Boolean(value) {
return value ? new True() : new False();
}
abstract foo();
}
class True extends Boolean {
True();
foo() => ...;
}
===
The text was updated successfully, but these errors were encountered: