Skip to content

view-types: store view types in the AST#156016

Open
scrabsha wants to merge 2 commits into
rust-lang:mainfrom
scrabsha:view-types/in-ast
Open

view-types: store view types in the AST#156016
scrabsha wants to merge 2 commits into
rust-lang:mainfrom
scrabsha:view-types/in-ast

Conversation

@scrabsha
Copy link
Copy Markdown
Contributor

@scrabsha scrabsha commented Apr 30, 2026

View all comments

Tracking issue: #155938.

Instead of discarding view types, we store them in the AST now!

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Apr 30, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-bors

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch from 52c4eee to 2bafb0c Compare May 1, 2026 13:55
@rust-log-analyzer

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch from 2bafb0c to 7f6749b Compare May 1, 2026 15:17
@rustbot rustbot added T-clippy Relevant to the Clippy team. T-rustfmt Relevant to the rustfmt team, which will review and decide on the PR/issue. labels May 1, 2026
@scrabsha scrabsha force-pushed the view-types/in-ast branch from 7f6749b to 77bdbc2 Compare May 1, 2026 15:21
@rust-log-analyzer

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch 4 times, most recently from d9ef8d8 to ec789ac Compare May 3, 2026 09:31
Comment thread compiler/rustc_ast/src/ast.rs Outdated
@JonathanBrouwer
Copy link
Copy Markdown
Contributor

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 3, 2026
rust-bors Bot pushed a commit that referenced this pull request May 3, 2026
view-types: store borrows of view types in the AST
Comment thread compiler/rustc_parse/src/parser/ty.rs Outdated
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 3, 2026

☀️ Try build successful (CI)
Build commit: 9d3dea7 (9d3dea74651f758e35177070e510be8f3639a7fd, parent: 6769f690f947f12e36db6b6503bab265b7b2cced)

@rust-timer

This comment has been minimized.

@scrabsha scrabsha mentioned this pull request May 3, 2026
13 tasks
@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (9d3dea7): comparison URL.

Overall result: ✅ improvements - no action needed

Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.7% [-1.4%, -0.3%] 6
Improvements ✅
(secondary)
-0.2% [-0.2%, -0.1%] 2
All ❌✅ (primary) -0.7% [-1.4%, -0.3%] 6

Max RSS (memory usage)

Results (primary 0.1%, secondary -2.6%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.9% [1.9%, 1.9%] 1
Regressions ❌
(secondary)
1.2% [1.2%, 1.2%] 1
Improvements ✅
(primary)
-0.8% [-0.8%, -0.7%] 2
Improvements ✅
(secondary)
-4.4% [-7.3%, -1.5%] 2
All ❌✅ (primary) 0.1% [-0.8%, 1.9%] 3

Cycles

Results (secondary 3.4%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
5.0% [0.5%, 9.9%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.3% [-1.3%, -1.3%] 1
All ❌✅ (primary) - - 0

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 503.61s -> 496.571s (-1.40%)
Artifact size: 394.46 MiB -> 394.47 MiB (0.00%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 3, 2026
@rust-bors

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch from ec789ac to 93208f2 Compare May 3, 2026 16:11
@scrabsha
Copy link
Copy Markdown
Contributor Author

scrabsha commented May 3, 2026

^

r? nikomatsakis

@scrabsha
Copy link
Copy Markdown
Contributor Author

scrabsha commented May 9, 2026

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels May 9, 2026
Comment thread compiler/rustc_ast/src/ast.rs Outdated
@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 10, 2026
@scrabsha scrabsha force-pushed the view-types/in-ast branch from f0d6895 to 9a4f5ec Compare May 11, 2026 17:21
@rust-log-analyzer

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch from 9a4f5ec to 827c78c Compare May 11, 2026 19:20
Comment on lines +2999 to +3016
let (kind, view, span) = match self.ty.kind {
ref kind if let Some(view) = kind.as_implicit_self_maybe_wrapped_in_view() => {
(SelfKind::Value(mutbl), view, self.pat.span)
}
TyKind::Ref(lt, MutTy { ref ty, mutbl })
if let Some(view) = ty.kind.as_implicit_self_maybe_wrapped_in_view() =>
{
(SelfKind::Region(lt, mutbl), view, self.pat.span)
}
TyKind::PinnedRef(lt, MutTy { ref ty, mutbl })
if ty.kind.is_implicit_self() =>
if let Some(view) = ty.kind.as_implicit_self_maybe_wrapped_in_view() =>
{
Some(respan(self.pat.span, SelfKind::Pinned(lt, mutbl)))
(SelfKind::Pinned(lt, mutbl), view, self.pat.span)
}
_ => Some(respan(
self.pat.span.to(self.ty.span),
SelfKind::Explicit(self.ty.clone(), mutbl),
)),
_ => (SelfKind::Explicit(self.ty.clone(), mutbl), ViewKind::Full, self.ty.span),
};
let param = respan(span, SelfParam { view, kind });
return Some(param);
Copy link
Copy Markdown
Contributor Author

@scrabsha scrabsha May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i am not happy at all with this code, but i cannot think of a better way to express things. opinions are welcome.

View changes since the review

matches!(self, TyKind::ImplicitSelf)
}

pub fn as_implicit_self_maybe_wrapped_in_view(&self) -> Option<ViewKind> {
Copy link
Copy Markdown
Contributor Author

@scrabsha scrabsha May 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

similarly, this method name is very very very meh

View changes since the review

@rust-log-analyzer

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch from 827c78c to 1707ca0 Compare May 11, 2026 19:42
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels May 11, 2026
@scrabsha
Copy link
Copy Markdown
Contributor Author

scrabsha commented May 17, 2026

@rustbot reroll

edit: did y'all know there was a shortcut for "comment and close"?

@scrabsha scrabsha closed this May 17, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented May 17, 2026

Error: Assignment is not allowed on a closed PR.

Please file an issue on GitHub at triagebot if there's a problem with this bot, or reach out on #triagebot on Zulip.

@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 17, 2026
@scrabsha scrabsha reopened this May 17, 2026
@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 17, 2026
@scrabsha
Copy link
Copy Markdown
Contributor Author

@rustbot reroll

@rustbot rustbot assigned TaKO8Ki and unassigned nikomatsakis May 17, 2026
@rust-log-analyzer

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch from 1707ca0 to b65ae52 Compare May 17, 2026 16:34
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented May 17, 2026

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@rust-log-analyzer

This comment has been minimized.

@scrabsha scrabsha force-pushed the view-types/in-ast branch from b65ae52 to c916edc Compare May 17, 2026 16:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-rustfmt Relevant to the rustfmt team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants