Skip to content

Warn by default on unused mutable variables - #5966

Closed
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083
Closed

Warn by default on unused mutable variables#5966
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

Closes#3083.

This takes a similar approach to #5797 where a set is present on the tcx of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe legacy_modes, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.

@catamorphism

Copy link
Copy Markdown
Contributor

Needs a rebase (sorry!)

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

@catamorphism, no problem, should be rebased now

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

I think that the r+ accidentally went on the first instead of the last commit, but I went ahead and addressed your comments anyway (hopefully the comments in the code clarify a bit more).

@catamorphism

Copy link
Copy Markdown
Contributor

Yup, I made a mistake and r+'d the wrong commit. Thanks for the added comments, they're helpful! (And I r+'d the right one now.)

bors added a commit that referenced this pull request Apr 22, 2013
Closes#3083.
This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.
Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).
Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
@borsbors closed this Apr 22, 2013
flip1995 pushed a commit to flip1995/rust that referenced this pull request Aug 28, 2020
Corrects the float_equality_without_abs lint
Fixes an issue in the `float_equality_without_abs` lint. The lint suggestion was configured in a way that it lints the whole error and not just the subtraction part. In the current configuration the lint would suggest to change the expression in a wrong way, e.g.
```rust
let _ = (a - b) < f32::EPSILON; // before
let _ = (a - b).abs(); // after
```
This was dicovered by @flip1995. (See discussion of PR rust-lang#5952).
Also the suggestion is now formatted via `utils::sugg`.
changelog: none
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@alexcrichton@catamorphism@graydon@bors
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Warn by default on unused mutable variables by alexcrichton · Pull Request #5966 · rust-lang/rust · GitHub
Skip to content

Warn by default on unused mutable variables - #5966

Closed
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083
Closed

Warn by default on unused mutable variables#5966
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

Closes#3083.

This takes a similar approach to #5797 where a set is present on the tcx of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe legacy_modes, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.

@catamorphism

Copy link
Copy Markdown
Contributor

Needs a rebase (sorry!)

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

@catamorphism, no problem, should be rebased now

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

I think that the r+ accidentally went on the first instead of the last commit, but I went ahead and addressed your comments anyway (hopefully the comments in the code clarify a bit more).

@catamorphism

Copy link
Copy Markdown
Contributor

Yup, I made a mistake and r+'d the wrong commit. Thanks for the added comments, they're helpful! (And I r+'d the right one now.)

bors added a commit that referenced this pull request Apr 22, 2013
Closes#3083.
This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.
Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).
Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
@borsbors closed this Apr 22, 2013
flip1995 pushed a commit to flip1995/rust that referenced this pull request Aug 28, 2020
Corrects the float_equality_without_abs lint
Fixes an issue in the `float_equality_without_abs` lint. The lint suggestion was configured in a way that it lints the whole error and not just the subtraction part. In the current configuration the lint would suggest to change the expression in a wrong way, e.g.
```rust
let _ = (a - b) < f32::EPSILON; // before
let _ = (a - b).abs(); // after
```
This was dicovered by @flip1995. (See discussion of PR rust-lang#5952).
Also the suggestion is now formatted via `utils::sugg`.
changelog: none
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@alexcrichton@catamorphism@graydon@bors
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Warn by default on unused mutable variables by alexcrichton · Pull Request #5966 · rust-lang/rust · GitHub
Skip to content

Warn by default on unused mutable variables - #5966

Closed
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083
Closed

Warn by default on unused mutable variables#5966
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

Closes#3083.

This takes a similar approach to #5797 where a set is present on the tcx of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe legacy_modes, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.

@catamorphism

Copy link
Copy Markdown
Contributor

Needs a rebase (sorry!)

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

@catamorphism, no problem, should be rebased now

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

I think that the r+ accidentally went on the first instead of the last commit, but I went ahead and addressed your comments anyway (hopefully the comments in the code clarify a bit more).

@catamorphism

Copy link
Copy Markdown
Contributor

Yup, I made a mistake and r+'d the wrong commit. Thanks for the added comments, they're helpful! (And I r+'d the right one now.)

bors added a commit that referenced this pull request Apr 22, 2013
Closes#3083.
This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.
Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).
Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
@borsbors closed this Apr 22, 2013
flip1995 pushed a commit to flip1995/rust that referenced this pull request Aug 28, 2020
Corrects the float_equality_without_abs lint
Fixes an issue in the `float_equality_without_abs` lint. The lint suggestion was configured in a way that it lints the whole error and not just the subtraction part. In the current configuration the lint would suggest to change the expression in a wrong way, e.g.
```rust
let _ = (a - b) < f32::EPSILON; // before
let _ = (a - b).abs(); // after
```
This was dicovered by @flip1995. (See discussion of PR rust-lang#5952).
Also the suggestion is now formatted via `utils::sugg`.
changelog: none
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@alexcrichton@catamorphism@graydon@bors
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Warn by default on unused mutable variables by alexcrichton · Pull Request #5966 · rust-lang/rust · GitHub
Skip to content

Warn by default on unused mutable variables - #5966

Closed
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083
Closed

Warn by default on unused mutable variables#5966
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

Closes#3083.

This takes a similar approach to #5797 where a set is present on the tcx of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe legacy_modes, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.

@catamorphism

Copy link
Copy Markdown
Contributor

Needs a rebase (sorry!)

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

@catamorphism, no problem, should be rebased now

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

I think that the r+ accidentally went on the first instead of the last commit, but I went ahead and addressed your comments anyway (hopefully the comments in the code clarify a bit more).

@catamorphism

Copy link
Copy Markdown
Contributor

Yup, I made a mistake and r+'d the wrong commit. Thanks for the added comments, they're helpful! (And I r+'d the right one now.)

bors added a commit that referenced this pull request Apr 22, 2013
Closes#3083.
This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.
Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).
Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
@borsbors closed this Apr 22, 2013
flip1995 pushed a commit to flip1995/rust that referenced this pull request Aug 28, 2020
Corrects the float_equality_without_abs lint
Fixes an issue in the `float_equality_without_abs` lint. The lint suggestion was configured in a way that it lints the whole error and not just the subtraction part. In the current configuration the lint would suggest to change the expression in a wrong way, e.g.
```rust
let _ = (a - b) < f32::EPSILON; // before
let _ = (a - b).abs(); // after
```
This was dicovered by @flip1995. (See discussion of PR rust-lang#5952).
Also the suggestion is now formatted via `utils::sugg`.
changelog: none
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@alexcrichton@catamorphism@graydon@bors
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Warn by default on unused mutable variables by alexcrichton · Pull Request #5966 · rust-lang/rust · GitHub
Skip to content

Warn by default on unused mutable variables - #5966

Closed
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083
Closed

Warn by default on unused mutable variables#5966
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

Closes#3083.

This takes a similar approach to #5797 where a set is present on the tcx of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe legacy_modes, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.

@catamorphism

Copy link
Copy Markdown
Contributor

Needs a rebase (sorry!)

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

@catamorphism, no problem, should be rebased now

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

I think that the r+ accidentally went on the first instead of the last commit, but I went ahead and addressed your comments anyway (hopefully the comments in the code clarify a bit more).

@catamorphism

Copy link
Copy Markdown
Contributor

Yup, I made a mistake and r+'d the wrong commit. Thanks for the added comments, they're helpful! (And I r+'d the right one now.)

bors added a commit that referenced this pull request Apr 22, 2013
Closes#3083.
This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.
Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).
Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
@borsbors closed this Apr 22, 2013
flip1995 pushed a commit to flip1995/rust that referenced this pull request Aug 28, 2020
Corrects the float_equality_without_abs lint
Fixes an issue in the `float_equality_without_abs` lint. The lint suggestion was configured in a way that it lints the whole error and not just the subtraction part. In the current configuration the lint would suggest to change the expression in a wrong way, e.g.
```rust
let _ = (a - b) < f32::EPSILON; // before
let _ = (a - b).abs(); // after
```
This was dicovered by @flip1995. (See discussion of PR rust-lang#5952).
Also the suggestion is now formatted via `utils::sugg`.
changelog: none
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@alexcrichton@catamorphism@graydon@bors
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Warn by default on unused mutable variables by alexcrichton · Pull Request #5966 · rust-lang/rust · GitHub
Skip to content

Warn by default on unused mutable variables - #5966

Closed
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083
Closed

Warn by default on unused mutable variables#5966
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

Closes#3083.

This takes a similar approach to #5797 where a set is present on the tcx of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe legacy_modes, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.

@catamorphism

Copy link
Copy Markdown
Contributor

Needs a rebase (sorry!)

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

@catamorphism, no problem, should be rebased now

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

I think that the r+ accidentally went on the first instead of the last commit, but I went ahead and addressed your comments anyway (hopefully the comments in the code clarify a bit more).

@catamorphism

Copy link
Copy Markdown
Contributor

Yup, I made a mistake and r+'d the wrong commit. Thanks for the added comments, they're helpful! (And I r+'d the right one now.)

bors added a commit that referenced this pull request Apr 22, 2013
Closes#3083.
This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.
Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).
Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
@borsbors closed this Apr 22, 2013
flip1995 pushed a commit to flip1995/rust that referenced this pull request Aug 28, 2020
Corrects the float_equality_without_abs lint
Fixes an issue in the `float_equality_without_abs` lint. The lint suggestion was configured in a way that it lints the whole error and not just the subtraction part. In the current configuration the lint would suggest to change the expression in a wrong way, e.g.
```rust
let _ = (a - b) < f32::EPSILON; // before
let _ = (a - b).abs(); // after
```
This was dicovered by @flip1995. (See discussion of PR rust-lang#5952).
Also the suggestion is now formatted via `utils::sugg`.
changelog: none
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@alexcrichton@catamorphism@graydon@bors
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Warn by default on unused mutable variables by alexcrichton · Pull Request #5966 · rust-lang/rust · GitHub
Skip to content

Warn by default on unused mutable variables - #5966

Closed
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083
Closed

Warn by default on unused mutable variables#5966
alexcrichton wants to merge 5 commits into
rust-lang:incomingfrom
alexcrichton:issue-3083

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

Closes#3083.

This takes a similar approach to #5797 where a set is present on the tcx of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe legacy_modes, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.

@catamorphism

Copy link
Copy Markdown
Contributor

Needs a rebase (sorry!)

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

@catamorphism, no problem, should be rebased now

@alexcrichton

Copy link
Copy Markdown
MemberAuthor

I think that the r+ accidentally went on the first instead of the last commit, but I went ahead and addressed your comments anyway (hopefully the comments in the code clarify a bit more).

@catamorphism

Copy link
Copy Markdown
Contributor

Yup, I made a mistake and r+'d the wrong commit. Thanks for the added comments, they're helpful! (And I r+'d the right one now.)

bors added a commit that referenced this pull request Apr 22, 2013
Closes#3083.
This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.
Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).
Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
@borsbors closed this Apr 22, 2013
flip1995 pushed a commit to flip1995/rust that referenced this pull request Aug 28, 2020
Corrects the float_equality_without_abs lint
Fixes an issue in the `float_equality_without_abs` lint. The lint suggestion was configured in a way that it lints the whole error and not just the subtraction part. In the current configuration the lint would suggest to change the expression in a wrong way, e.g.
```rust
let _ = (a - b) < f32::EPSILON; // before
let _ = (a - b).abs(); // after
```
This was dicovered by @flip1995. (See discussion of PR rust-lang#5952).
Also the suggestion is now formatted via `utils::sugg`.
changelog: none
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@alexcrichton@catamorphism@graydon@bors