-
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
Turn compile-time errors into static warnings #1031
Comments
Marked this as blocking #970. |
Marked this as blocking #972. |
Marked this as blocking #974. |
Marked this as blocking #975. |
Marked this as blocking #976. |
Marked this as blocking #977. |
Marked this as blocking #978. |
Marked this as blocking #980. |
Gilad, has this sweep been completed? |
No. All discussions that require approval from AAR have been put off to |
Added this to the M1 milestone. |
Added Started label. |
The spec for these is done. Implementation in progress. |
Added Done label. |
One more case of relaxation. Latest version of spec, section 10.10.1 replaces errors with warnings in cases where the class or the constructor is undeclared. Motivation is similar to other cases: do not impose workflow - just warn and make it a dynamic error. "Let e be a new expression of the form new T.id(a1, .., an, xn+1: an+1, …, xn+k: an+k) or the form new T(a1, .., an, xn+1: an+1, …, xn+k: an+k). It is a static warning if T is not a class or interface accessible in the current scope, optionally followed by type arguments. If e is of the form new T.id(a1, .., an, xn+1: an+1, …, xn+k: an+k) it is a static warning if T.id is not the name of a constructor declared by the type T. If e of the form new T(a1, .., an, xn+1: an+1, …, xn+k: an+k) it is a static warning if the type T does not declare a constructor with the same name as the declaration of T. |
2 similar comments
One more case of relaxation. Latest version of spec, section 10.10.1 replaces errors with warnings in cases where the class or the constructor is undeclared. Motivation is similar to other cases: do not impose workflow - just warn and make it a dynamic error. "Let e be a new expression of the form new T.id(a1, .., an, xn+1: an+1, …, xn+k: an+k) or the form new T(a1, .., an, xn+1: an+1, …, xn+k: an+k). It is a static warning if T is not a class or interface accessible in the current scope, optionally followed by type arguments. If e is of the form new T.id(a1, .., an, xn+1: an+1, …, xn+k: an+k) it is a static warning if T.id is not the name of a constructor declared by the type T. If e of the form new T(a1, .., an, xn+1: an+1, …, xn+k: an+k) it is a static warning if the type T does not declare a constructor with the same name as the declaration of T. |
One more case of relaxation. Latest version of spec, section 10.10.1 replaces errors with warnings in cases where the class or the constructor is undeclared. Motivation is similar to other cases: do not impose workflow - just warn and make it a dynamic error. "Let e be a new expression of the form new T.id(a1, .., an, xn+1: an+1, …, xn+k: an+k) or the form new T(a1, .., an, xn+1: an+1, …, xn+k: an+k). It is a static warning if T is not a class or interface accessible in the current scope, optionally followed by type arguments. If e is of the form new T.id(a1, .., an, xn+1: an+1, …, xn+k: an+k) it is a static warning if T.id is not the name of a constructor declared by the type T. If e of the form new T(a1, .., an, xn+1: an+1, …, xn+k: an+k) it is a static warning if the type T does not declare a constructor with the same name as the declaration of T. |
Revisions updated by `dart tools/rev_sdk_deps.dart`. file (https://github.com/google/file.dart/compare/a18ad1c..7418131): 7418131 2023-10-11 Parker Lougheed Remove now unnecessary glob dependency override (#226) http (https://github.com/dart-lang/http/compare/88ec75e..7240d0a): 7240d0a 2023-10-11 Brian Quinlan Remove obsolete pigeon-generated file (#1032) 827f4fe 2023-10-10 Brian Quinlan Prepare to release cronet 0.4.0 (#1031) native (https://github.com/dart-lang/native/compare/22f4481..757f503): 757f503 2023-10-16 Gabriel Terwesten Use `Logger.detached` for test loggers (#158) sse (https://github.com/dart-lang/sse/compare/e190744..37df57d): 37df57d 2023-10-13 Kevin Moore Enable and fix latest lints (#91) test (https://github.com/dart-lang/test/compare/4341470..ba050ae): ba050ae2 2023-10-13 Nate Bosch Move functions to non-deprecated library (#2120) 96e1ed2d 2023-10-13 Nate Bosch Remove unused href field from error report (#2118) ae7f30e9 2023-10-13 Nate Bosch Make compiler optional in calls to currentPlatform (#2117) tools (https://github.com/dart-lang/tools/compare/92c5c15..ddeccf6): ddeccf6 2023-10-10 Elias Yishak Handling malformed log items in log file (#175) webdev (https://github.com/dart-lang/webdev/compare/7c2c2d7..8d48d5e): 8d48d5ea 2023-10-13 Ben Konyi Bump package:vm_service to ^12.0.0 (#2248) 9102b427 2023-10-13 Anna Gringauze Add evaluation test to webdev to catch issues with runtime debugging API (#2250) 63c7e728 2023-10-12 Elliott Brooks Cider expects messages from a Chrome extension to be a JS object, not a string (#2249) a10bf10e 2023-10-11 Devon Carew regenerate from the latest package:mono_repo (#2247) Change-Id: I5c16c1387b613d1e6076579b26e6b64735097b7e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/330662 Auto-Submit: Devon Carew <devoncarew@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
There are a number of situations that are specified to be compile-time errors, but which might be treated as static warnings instead. This would be desirable, because compile-time errors impose a workflow: one must resolve them before moving forward to testing/running the program. It would be more in keeping with the spirit of Dart to "get out of the developer's way".
We should do a systematic sweep of these issues and decide which ones can be liberalized in this fashion.
The text was updated successfully, but these errors were encountered: