Add a lint mode for unnecessary allocations #6647

Closed
wants to merge 2 commits into
from

Conversation

Projects
None yet
6 participants
Owner

alexcrichton commented May 20, 2013

This adds a lint mode for detecting unnecessary allocations on the heap. This isn't super fancy, currently it only has two rules

  1. For a function's arguments, if you allocate a [~|@]str literal, when the type of the argument is a &str, emit a warning.
  2. For the same case, emit warnings for boxed vectors when slices are required.

After adding the lint, I rampaged through the libraries and removed all the unnecessary allocations I could find.

Contributor

jdm commented May 20, 2013

\o/

Contributor

graydon commented May 20, 2013

Oh this is so nice. Hurrah!

(Wishlist: another one that detects when an argument is passed by ~ or @ but never escapes the function, so can/should be a borrow?)

r+

Heavenly optimizations. ☁️

Contributor

bors replied May 21, 2013

saw approval from graydon
at alexcrichton/rust@82fa001

Contributor

bors replied May 21, 2013

merging alexcrichton/rust/unnecessary-alloc = 82fa001 into auto

Contributor

bors replied May 21, 2013

alexcrichton/rust/unnecessary-alloc = 82fa001 merged ok, testing candidate = 5a3e320

Contributor

bors replied May 21, 2013

fast-forwarding incoming to auto = 5a3e320

Member

sanxiyn commented May 21, 2013

I think this needs a test.

@bors bors added a commit that referenced this pull request May 21, 2013

@bors bors auto merge of #6647 : alexcrichton/rust/unnecessary-alloc, r=graydon
This adds a lint mode for detecting unnecessary allocations on the heap. This isn't super fancy, currently it only has two rules

1. For a function's arguments, if you allocate a `[~|@]str` literal, when the type of the argument is a `&str`, emit a warning.
2. For the same case, emit warnings for boxed vectors when slices are required.

After adding the lint, I rampaged through the libraries and removed all the unnecessary allocations I could find.
5a3e320

bors closed this May 21, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment