Giter Club home page Giter Club logo

Comments (6)

bwilkerson avatar bwilkerson commented on June 26, 2024 3

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.

lrhn avatar lrhn commented on June 26, 2024 1

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.

pq avatar pq commented on June 26, 2024

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.

lrhn avatar lrhn commented on June 26, 2024

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.

julemand101 avatar julemand101 commented on June 26, 2024

Should the full expression be marked dead code or only the assignment to the variable?

from sdk.

pq avatar pq commented on June 26, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.