-
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
Propose enhancement of field initializers #1038
Comments
More specifically, I believe John's proposal is to allow non-constant initializer expressions for final non-static fields. Java and C# allow this and, as far as I know, it doesn't have any of the hairy implications that static initializations have. It's basically syntactic sugar for running an initializer expression at the beginning of the constructor body. |
This comment was originally written by prujohn...@gmail.com Yes. Thanks for putting a finer point on it. :) |
Added Area-Language, Triaged labels. |
Set owner to @gbracha. |
Added Accepted label. |
We are looking at changes to initialization. Removed Type-Defect label. |
This comment was originally written by pr...@gmail.com Glad to see this is v.08. Thanks! |
Don't thank us yet! a. The change only applies to static variables. We're still thinking about the implications for instance variables. That's a lot harder. b. As the spec notes, the changes aren't implemented yet. But they will be. And thank you for bearing with us. |
This comment was originally written by prujohn...@gmail.com Excellent progress though. I still applaud it. |
Always executed before any expression in the constructors' initializer list. 'this' must not be in scope for the expression. In addition, this prevents setting the final field in any other part of the code. Added this to the M1 milestone. |
Spec version 0.11 allows arbitrary code in an instance initializer, provided "this" is not used. Added Done label. |
This comment was originally written by pr...@gmail.com Excellent! |
This comment was originally written by @seaneagan in the following: var c = 'c'; class A { main() => print(new A().b); I assume it will print 'c', but it could be surprising since normally instance variables can be accessed without "this." in class bodies. |
This comment was originally written by ladicek@gmail.com Sean: I think that your example will fail (compile-time error?), because in the initializer of 'b', you implicitly access 'this'. The access to 'c' in this initializer is actually an access to 'this.c', because the 'c' inside the class shadows outer 'c'. I don't think that scoping rules are changed by this, and it would be really confusing if they were (as you note). |
Changed the title to: "Propose enhancement of field initializers". |
…, convert, crypto, csslib, ecosystem, ffi, file, fixnum, html, http, lints, logging, markdown, matcher, mime, native, path, pool, protobuf, pub_semver, shelf, source_map_stack_trace, source_maps, source_span, sse, stack_trace, stream_channel, string_scanner, term_glyph, test_descriptor, test_process, test_reflective_loader, tools, typed_data, watcher, web_socket_channel, webdriver, webkit_inspection_protocol, yaml, yaml_edit Revisions updated by `dart tools/rev_sdk_deps.dart`. async (https://github.com/dart-lang/async/compare/def4482..9924570): 9924570 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#255) 61cdb0f 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#254) boolean_selector (https://github.com/dart-lang/boolean_selector/compare/479e1c1..7f523c3): 7f523c3 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#53) 1ed2941 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#54) browser_launcher (https://github.com/dart-lang/browser_launcher/compare/c2871b2..4f9e784): 4f9e784 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#51) 706c031 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#52) cli_util (https://github.com/dart-lang/cli_util/compare/56c1235..500dffa): 500dffa 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#91) c66e201 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#92) clock (https://github.com/dart-lang/clock/compare/200a020..f975668): f975668 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#59) eb5d2f5 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#58) convert (https://github.com/dart-lang/convert/compare/03242b2..f24afa7): f24afa7 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#89) a3e9bc5 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#90) crypto (https://github.com/dart-lang/crypto/compare/36ead7c..f3e64d2): f3e64d2 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#155) 7a7b517 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#156) csslib (https://github.com/dart-lang/csslib/compare/f6b68dd..17346e5): 17346e5 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#191) 4bdc553 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#192) ecosystem (https://github.com/dart-lang/ecosystem/compare/4acfcaf..dda7886): dda7886 2023-11-01 dependabot[bot] Bump peter-evans/create-or-update-comment (#192) b681c56 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#193) 0d768d4 2023-11-01 dependabot[bot] Bump subosito/flutter-action from 2.10.0 to 2.12.0 (#190) 178d244 2023-11-01 dependabot[bot] Bump actions/github-script (#194) 4b3e572 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#191) ffi (https://github.com/dart-lang/ffi/compare/2faec28..c926657): c926657 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#219) 3181ec0 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#220) file (https://github.com/google/file.dart/compare/7418131..e7c03aa): e7c03aa 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.0 to 1.6.0 (#233) fixnum (https://github.com/dart-lang/fixnum/compare/ef45eb5..3279f5d): 3279f5d 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#120) 4913894 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#121) html (https://github.com/dart-lang/html/compare/49e2c8e..06bc148): 06bc148 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#232) 2630607 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#233) http (https://github.com/dart-lang/http/compare/7240d0a..b9389fe): b9389fe 2023-11-01 dependabot[bot] Bump futureware-tech/simulator-action from 2 to 3 (#1037) d7c36ae 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#1038) lints (https://github.com/dart-lang/lints/compare/5c60f48..f58fd77): f58fd77 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#168) logging (https://github.com/dart-lang/logging/compare/642ed21..324a0b5): 324a0b5 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#150) e9b13b7 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#151) markdown (https://github.com/dart-lang/markdown/compare/4e2e970..efb73b3): efb73b3 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#561) 2e4a3bc 2023-11-01 dependabot[bot] Bump subosito/flutter-action from 2.10.0 to 2.11.0 (#559) 22e378b 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#560) matcher (https://github.com/dart-lang/matcher/compare/7512f80..3d03fa1): 3d03fa1 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#231) b7d24c8 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#232) mime (https://github.com/dart-lang/mime/compare/af3e5fe..8ebf946): 8ebf946 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#108) 4328d32 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#107) native (https://github.com/dart-lang/native/compare/279094d..de9d59e): de9d59e 2023-11-01 Daco Harkes [infra] Fix PR publisher comments (#177) 22b6b24 2023-11-01 Daco Harkes [infra] Rename `dart.yaml` to `native.yaml` (#176) cc42fb1 2023-11-01 Daco Harkes [native_toolchain_c] Use sysroot on Android (#180) 01d92b0 2023-11-01 Daco Harkes [native_toolchain_c] Bump highest tested NDK version to 34 (#182) 53facde 2023-11-01 Daco Harkes [native_toolchain_c] Fix NDK discovery (#179) 285ee6c 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#174) 46a05e4 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#172) 23187fe 2023-11-01 dependabot[bot] Bump nttld/setup-ndk from 1.3.1 to 1.4.1 (#173) path (https://github.com/dart-lang/path/compare/4ca27d4..18ec71f): 18ec71f 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#153) f26c20c 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#154) pool (https://github.com/dart-lang/pool/compare/5ccef15..c78cef4): c78cef4 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#76) protobuf (https://github.com/dart-lang/protobuf/compare/3f567b2..dcec2ed): dcec2ed 2023-10-31 Ömer Sinan Ağacan Annotate deepCopy with @useResult (#897) pub_semver (https://github.com/dart-lang/pub_semver/compare/8e5a58f..f9e94ee): f9e94ee 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#95) 81fdbcf 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#94) shelf (https://github.com/dart-lang/shelf/compare/c15fc6f..b3adc7c): b3adc7c 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#391) baea52d 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#392) source_map_stack_trace (https://github.com/dart-lang/source_map_stack_trace/compare/73d449c..2209626): 2209626 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#45) bfa3949 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#44) source_maps (https://github.com/dart-lang/source_maps/compare/fc6aa16..87dc587): 87dc587 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#84) 33ba11d 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#85) source_span (https://github.com/dart-lang/source_span/compare/92e50bf..ed16e0d): ed16e0d 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#105) aacd748 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#104) sse (https://github.com/dart-lang/sse/compare/37df57d..8ddb95f): 8ddb95f 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#95) 8830125 2023-11-01 dependabot[bot] Bump nanasess/setup-chromedriver from 2.2.0 to 2.2.1 (#94) 86dd8f9 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#93) stack_trace (https://github.com/dart-lang/stack_trace/compare/634589f..6496ff8): 6496ff8 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#145) 3d60304 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#144) stream_channel (https://github.com/dart-lang/stream_channel/compare/ffdb208..178104d): 178104d 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#98) 1193387 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#97) string_scanner (https://github.com/dart-lang/string_scanner/compare/9c525f7..a7105ef): a7105ef 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#65) f33ca6f 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#66) term_glyph (https://github.com/dart-lang/term_glyph/compare/cff80de..7c1eb9d): 7c1eb9d 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#45) 39073ca 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#44) test_descriptor (https://github.com/dart-lang/test_descriptor/compare/55b5eac..c417cbb): c417cbb 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#59) dcfde39 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#58) test_process (https://github.com/dart-lang/test_process/compare/d610333..c21e40d): c21e40d 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#51) bfd0576 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#50) test_reflective_loader (https://github.com/dart-lang/test_reflective_loader/compare/8593eb1..17d40bb): 17d40bb 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#54) e664092 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#55) tools (https://github.com/dart-lang/tools/compare/01c0b52..dd91cb6): dd91cb6 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#192) 603b012 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#191) typed_data (https://github.com/dart-lang/typed_data/compare/d1c15ed..0b16bd2): 0b16bd2 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#76) f869102 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#77) watcher (https://github.com/dart-lang/watcher/compare/6ad58dc..b2b278a): b2b278a 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#154) 97e9637 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#155) web_socket_channel (https://github.com/dart-lang/web_socket_channel/compare/f3ac1bf..82ac73f): 82ac73f 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#289) 3615850 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#290) webdriver (https://github.com/google/webdriver.dart/compare/eaf9c58..43ed1db): 43ed1db 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#289) 02fd658 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#288) 8828360 2023-11-01 dependabot[bot] Bump nanasess/setup-chromedriver from 2.2.0 to 2.2.1 (#287) webkit_inspection_protocol (https://github.com/google/webkit_inspection_protocol.dart/compare/82f0c1c..2c6f8b6): 2c6f8b6 2023-11-01 dependabot[bot] Bump actions/checkout from 3.6.0 to 4.1.1 (#114) d4e4d55 2023-11-01 dependabot[bot] Bump nanasess/setup-chromedriver from 2.2.0 to 2.2.1 (#115) yaml (https://github.com/dart-lang/yaml/compare/9f0d649..98a3aab): 98a3aab 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#154) b63372b 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#155) yaml_edit (https://github.com/dart-lang/yaml_edit/compare/a7e7fba..9b9d33c): 9b9d33c 2023-11-01 dependabot[bot] Bump actions/checkout from 4.1.0 to 4.1.1 (#61) b71c2e8 2023-11-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.1 to 1.6.0 (#60) Change-Id: I8b663f536d4e80728c6570372d886edfef227cf1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/333059 Auto-Submit: Devon Carew <devoncarew@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This issue was originally filed by prujoh...@gmail.com
Propose that this:
class Foo{
final myOtherClass;
Foo()
: myOtherClass = new myOtherClass()
}
also allow this:
class Foo{
final myOtherClass = new myOtherClass();
Foo();
}
See: https://groups.google.com/a/dartlang.org/group/misc/browse_thread/thread/32998e270e3cb57b/ec5cfe02c5acfee5#ec5cfe02c5acfee5
The text was updated successfully, but these errors were encountered: