Comments (6)
I agree, we should only mark the variable, not the initializer.
I believe that in the past we've made a distinction between 'dead code', code that can't be reached, and 'unnecessary' code, code that doesn't need to be there because it has no semantic value. I'd opt for using the latter terminology in this case.
from sdk.
I don't think it makes less sense than var _ = 0;
.
It just doesn't make sense to have a local variable declaration named _
which is not a parameter or pattern (which already does not introduce a variable).
An "unnecessary variable" warning would apply no matter how you declare it, late int _;
, const int _ = 1;;
, or just plain var _;
.
Using var _ = asyncOp();
to avoid "unawaited future" warnings can probably still work, it doesn't matter whether it's var
or final
, but they should use unawaited
instead.
(I guess I can see someone doing
var a = e1, _ = for effect(), b = e3;
but they still shouldn't.)
from sdk.
I don't think it makes less sense than var _ = 0;.
Good points!
Following your logic, it's probably sufficient to treat them both as dead and just issue a DEAD_CODE
warning.
Thank you!
from sdk.
Purely philosophically it's not really dead code. It's not code that could be run, but isn't reachable on any path.
It's just noise that does nothing, even though it does run: A variable declaration that does not introduce a variable, all it does is to evaluate its initializer expression, is just the same as that expression as an expression statement.
(Still allows you to format multiple such expressions on one line as var _ = doA(), _ = doB(), _ = doC();
, formatter permitting. Not a good reason.)
In practice, I'm fine with labeling it dead code.
from sdk.
Should the full expression be marked dead code or only the assignment to the variable?
from sdk.
Purely philosophically it's not really dead code.
I appreciate this, thanks. You're right.
It's just noise that does nothing, even though it does run
Absolutely and if the initializer is side-effecting...
Should the full expression be marked dead code or only the assignment to the variable?
If we issue a dead code warning, I'd say we should limit it to the variable (and not the initializer).
/fyi @bwilkerson for 2 cents
from sdk.
Related Issues (20)
- `Swap with parent/child` assist should work on single-child `Flex`
- avoid_init_to_null fix of late initialize causes runtime errors HOT 1
- [dart2wasm] iFrame locks position on transition into view HOT 4
- [CP] [vm/ffi] Fix variadic arguments on MacOS Arm64 HOT 2
- analyzer plugins do not reanalyze non-Dart files when they are modified HOT 7
- `dart fix` output case inconsistency HOT 1
- Import `new_library` assist should auto-remove unecessary import HOT 2
- Add more context to `not_a_type` diagnostics
- Dart2Wasm compiler fails building when dart:ffi library is conditionally imported HOT 4
- [Null-aware elements] [meta] Null-aware elements implementation
- [resource_identifiers] `UsageQueryable` proposal HOT 4
- Possible index error in _processExpressionCompilationRequest
- Different async timing whether using vm, node, dart2js and dart2wasm HOT 3
- Macros: Expose doc comments of a declaration
- [Null-aware elements] Implement parser changes
- [Null-aware elements] CFE Implementation
- Make analysis server/IDEs show the distinction between fields and getters accurately and consistently
- The return type 'String' isn't a 'String', as required by the closure's context HOT 2
- Flaky coverage/package:front_end/src/fasta/type_inference/inference_visitor_base.dart on front-end-linux-release-x64-try
- Resolution of security advisories is breaking artifactory proxying.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdk.