-
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
Allowing null pointers is undesirable #24
Labels
closed-duplicate
Closed in favor of an existing report
Comments
This comment was originally written by cf...@gmail.com This is a duplicate of #22, Google Code returned a 502 when I submitted #22 so I didn't see it had gone through. Please delete this copy. |
This comment was originally written by johnle...@google.com |
DartBot
added
Type-Defect
closed-duplicate
Closed in favor of an existing report
labels
Oct 10, 2011
pq
added a commit
that referenced
this issue
Nov 10, 2015
Pulls in: * Added `prefer_is_not_empty` lint rule (#143). * Added `type_annotate_public_apis` lint rule (#24). * Added `avoid_as` lint rule (#145). * Fixed `non_constant_identifier_names` rule to special case underscore identifiers in callbacks. * Fix to escape `_`s in callback type validation (addresses false positives in `always_specify_types`) (#147). R=keertip@google.com Review URL: https://codereview.chromium.org/1434773002 .
This was referenced Dec 2, 2015
This was referenced Feb 2, 2016
Closed
This was referenced Feb 29, 2016
copybara-service bot
pushed a commit
that referenced
this issue
Mar 7, 2023
…stack_trace, stream_channel, test, tools, watcher, webdev, yaml, yaml_edit Revisions updated by `dart tools/rev_sdk_deps.dart`. async (https://github.com/dart-lang/async/compare/8deaa40..f454380): f454380 2023-03-02 Natalie Weizenbaum Add `StreamExtensions.listenAndBuffer()` (#235) dartdoc (https://github.com/dart-lang/dartdoc/compare/77d5994..98fa859): 98fa859c 2023-03-05 dependabot[bot] Bump cli_util from 0.3.5 to 0.4.0 (#3360) html (https://github.com/dart-lang/html/compare/0b8025c..08643e9): 08643e9 2023-03-02 Devon Carew prep for publishing 0.15.2 (#205) http (https://github.com/dart-lang/http/compare/1500a71..805a147): 805a147 2023-03-02 Kevin Moore Fix some spelling (#884) 5a2f036 2023-03-02 Kevin Moore Move to pkg:dart_flutter_team_lints, require Dart 2.19 (#883) 35b2cef 2023-03-02 Bahaa Fathi Yousef Corrected the spelling of "Implements" in "/http/lib/src/io_client.dart" (#871) bb86cf3 2023-02-27 Brian Quinlan Provide access to NSURLSession.sessionDescription (#881) http_multi_server (https://github.com/dart-lang/http_multi_server/compare/2cd5355..7bd190c): 7bd190c 2023-03-06 Kevin Moore Require Dart 2.19, enable and fix new team lints (#51) source_map_stack_trace (https://github.com/dart-lang/source_map_stack_trace/compare/a60ef54..45ea368): 45ea368 2023-03-07 Kevin Moore Require Dart 2.19, use pkg:dart_flutter_team_lints (#35) stream_channel (https://github.com/dart-lang/stream_channel/compare/0850515..a20ccd4): a20ccd4 2023-02-28 Kevin Moore move to pkg:dart_flutter_team_lints lints, fix code, bump min SDK (#87) test (https://github.com/dart-lang/test/compare/1307cc5..92da93a): 92da93a8 2023-03-06 Devon Carew dogfood the new setup-dart action (#1964) e49818ec 2023-03-01 dependabot[bot] Bump github/codeql-action from 2.2.1 to 2.2.5 (#1963) tools (https://github.com/dart-lang/tools/compare/28b7be8..a1c3506): a1c3506 2023-03-07 Devon Carew dogfood the new setup-dart action (#25) fb46723 2023-03-07 Elias Yishak Update pubspec.yaml (#24) 5a72344 2023-03-06 Elias Yishak Add `DashEvent` for toggling telemetry collection + send event whenever toggled (#23) watcher (https://github.com/dart-lang/watcher/compare/0ca6638..5968409): 5968409 2023-03-07 Kevin Moore blast_repo fixes (#139) e8f771a 2023-03-07 Kevin Moore Require Dart 2.19, use new team lints (#138) webdev (https://github.com/dart-lang/webdev/compare/deb801b..c007560): c007560 2023-03-06 Elliott Brooks (she/her) [MV3 Debug Extension] Show warning when clicking on debug extension for non Dart app (#2015) 1a010dc 2023-03-06 Devon Carew dogfood the new setup-dart action (#2017) 07743a3 2023-03-06 Anna Gringauze Fix exception mapping from JS to dart (#2004) eb63b31 2023-03-03 Elliott Brooks (she/her) Create a Dart Debug Extension issue template (#2014) 85f35d4 2023-03-01 Devon Carew update publishing automation integration (#2002) e748045 2023-02-28 Anna Gringauze Prepare to release webdev 3.0.1 (#2000) 5355050 2023-02-27 Elliott Brooks (she/her) [MV3 Debug Extension] Ignore page reloads for detecting navigation away from app (#1994) 4e08276 2023-02-27 Anna Gringauze Prepare to release dwds 18.0.0 (#1993) fc54d68 2023-02-27 Anna Gringauze Fix expression evaluation failures on empty scopes (#1998) 496a2b4 2023-02-27 Anna Gringauze Temporarily disable publish verification (#1996) yaml (https://github.com/dart-lang/yaml/compare/a6d8781..1ad2f49): 1ad2f49 2023-03-01 Kevin Moore Require Dart 2.19, migrate to dart_flutter_team_lints, make associated fixes (#138) 4d369fd 2023-03-01 Kevin Moore benchmark: fix output.json (#137) yaml_edit (https://github.com/dart-lang/yaml_edit/compare/998eea2..0668eb5): 0668eb5 2023-03-02 Jonas Finnemann Jensen Wrap recursively, prepare release (#28) a4ff857 2023-03-01 Mohamed Ishad Update CHANGELOG.md (#37) 2fdfbdb 2023-02-28 Mohamed Ishad Fix for issue #23 (#34) 494ad7c 2023-02-25 MikiPaul fixed typo (#36) Change-Id: I101c94575c20fca55c7440e84668413207073a32 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287162 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Devon Carew <devoncarew@google.com>
ghost
mentioned this issue
May 11, 2023
copybara-service bot
pushed a commit
that referenced
this issue
Jul 21, 2023
Here's a minimal repro that this CL fixes: `ui.dart` ```dart library dart.ui; import 'dart:ffi'; part 'foo.dart'; ``` `foo.dart` ```dart part of dart.ui; @Native<Void Function()>(symbol: 'foo_func', isLeaf: true) external void foo_func(); ``` When compiling with `compile_platform.dart` with `--target=dart2wasm`, the following error appears: ``` Unhandled exception: Verification error: Target=wasm, VerificationStage.afterModularTransformations: Invalid location with target 'wasm' on FunctionNode() (FunctionNode): RangeError (offset): Invalid value: Not in inclusive range 0..56: 91 Context: 'foo_func_$import'. Node: 'FunctionNode()'. #0 VerificationErrorListener.reportError (package:kernel/verifier.dart:81:5) #1 VerifyingVisitor.problem (package:kernel/verifier.dart:222:14) #2 VerifyingVisitor._getLocation (package:kernel/verifier.dart:1361:7) #3 VerifyingVisitor._hasLocation (package:kernel/verifier.dart:1370:26) #4 VerifyingVisitor.getSameLibraryLastSeenTreeNode (package:kernel/verifier.dart:1342:28) #5 VerifyingVisitor.localContext (package:kernel/verifier.dart:1382:24) #6 VerifyingVisitor.defaultDartType (package:kernel/verifier.dart:1491:41) #7 Visitor.visitVoidType (package:kernel/visitor.dart:1309:37) #8 VoidType.accept (package:kernel/ast.dart:11190:42) #9 FunctionNode.visitChildren (package:kernel/ast.dart:3919:16) #10 VerifyingVisitor.visitChildren (package:kernel/verifier.dart:259:10) #11 VerifyingVisitor.visitWithLocalScope (package:kernel/verifier.dart:266:5) #12 VerifyingVisitor.visitFunctionNode (package:kernel/verifier.dart:721:5) #13 FunctionNode.accept (package:kernel/ast.dart:3908:38) #14 VerifyingVisitor.visitProcedure (package:kernel/verifier.dart:620:19) #15 Procedure.accept (package:kernel/ast.dart:3311:40) #16 visitList (package:kernel/ast.dart:14488:14) #17 Library.visitChildren (package:kernel/ast.dart:591:5) #18 VerifyingVisitor.visitChildren (package:kernel/verifier.dart:259:10) #19 VerifyingVisitor.defaultTreeNode (package:kernel/verifier.dart:196:5) #20 TreeVisitor.visitLibrary (package:kernel/visitor.dart:503:35) #21 VerifyingVisitor.visitLibrary (package:kernel/verifier.dart:367:11) #22 Library.accept (package:kernel/ast.dart:577:38) #23 visitList (package:kernel/ast.dart:14488:14) #24 Component.visitChildren (package:kernel/ast.dart:14320:5) #25 VerifyingVisitor.visitChildren (package:kernel/verifier.dart:259:10) #26 VerifyingVisitor.visitComponent (package:kernel/verifier.dart:342:7) #27 Component.accept (package:kernel/ast.dart:14313:38) #28 VerifyingVisitor.check (package:kernel/verifier.dart:171:15) #29 verifyComponent (package:kernel/verifier.dart:69:20) ... ``` The issue seems to be that after doing this native transformation, the node's `fileUri` references the enclosing library (`ui.dart` above), but the `node.location` references the actual source file (`foo.dart` above) indirectly through `node.fileOffset`. This ends up being an issue when compiling the platform dill in Google3, but I didn't look into why `flutter build web --wasm` isn't broken. Internal bug: b/292172146 Change-Id: I2b8d7d215b2c36354860257ce651d50168e9523d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/315360 Reviewed-by: Ömer Ağacan <omersa@google.com> Commit-Queue: Jia Hao Goh <jiahaog@google.com>
Closed
Closed
This issue was closed.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This issue was originally filed by cf...@gmail.com
Short version: Null pointers are a really good way to mess up a program at runtime, and I'd like the Dart team to reevaluate whether they're absolutely required.
Slightly longer version: I would say the #1 cause of issues in my programs (excluding logical errors/requirements errors) are NPEs. Having a language support NPE removal, be it via some clever compiler warning or simply removing null altogether, would be wonderful. I'm personally partial to Scala's method of null removal, but I'm sure PL gurus like yourselves have seen many others.
Dart has a stated goal of avoiding the creation of programs that "are difficult to debug or maintain." NPEs are a huge pain point in this regard. I'd be really happy if the Dart team reevaluated whether they are absolutely required to achieve the other aims.
The text was updated successfully, but these errors were encountered: