Implement normalize_lexically by ChrisDenton · Pull Request #134696 · rust-lang/rust (original) (raw)

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation15 Commits1 Checks6 Files changed

Conversation

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters

[ Show hidden characters]({{ revealButtonHref }})

ChrisDenton

Implements #134694

This is, I think, the most straightforward implementation I could do, which will hopefully more easily allow experimentation if we decide to change the design here.

@rustbot

r? @workingjubilee

rustbot has assigned @workingjubilee.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

T-libs

Relevant to the library team, which will review and decide on the PR/issue.

labels

Dec 23, 2024

workingjubilee

workingjubilee

Comment on lines 3014 to 3021

Component::RootDir | Component::Prefix(_) => return Err(NormalizeError),
Component::CurDir => continue,
Component::ParentDir => {
if lexical.as_os_str().len() == root {
return Err(NormalizeError);

Choose a reason for hiding this comment

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

This is also a "should never happen" case, isn't it?

Choose a reason for hiding this comment

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

Ah, I remember now. As per the RFC, we need to guard against popping from the path when there's nothing to pop. So a/../.. must error which is simple enough. But the complicating factor here is that base paths like C:\ are split by components as (Prefix, RootDir) whereas in reality you almost always want to treat C:\ as one unit. So it checks if popping would go above the root by just doing a length check. This handles whatever the "root" may be, e.g. C: (without the \) or whatever.

Choose a reason for hiding this comment

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

Aha.

@bors

@workingjubilee

Hmm. This wasn't supposed to get frozen on those two questions, so I'm just going to rebase this and approve it. If I think we maybe should call unreachable!() instead of returning I can just PR that.

@rust-log-analyzer

This comment has been minimized.

@workingjubilee

ugh, the move of the tests breaks them because they relied on a struct expr

@ChrisDenton

Sorry for the delay here, I've kept getting distracted by other things. I've rebased, fixed the tests and squished.

@rust-log-analyzer

This comment has been minimized.

@bors

@ChrisDenton

@workingjubilee

@bors

📌 Commit c299e29 has been approved by workingjubilee

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

and removed S-waiting-on-author

Status: This is awaiting some action (such as code changes or more information) from the author.

labels

May 25, 2025

@workingjubilee

jhpratt added a commit to jhpratt/rust that referenced this pull request

May 25, 2025

@jhpratt

…=workingjubilee

Implement normalize_lexically

Implements rust-lang#134694

This is, I think, the most straightforward implementation I could do, which will hopefully more easily allow experimentation if we decide to change the design here.

bors added a commit that referenced this pull request

May 26, 2025

@bors

Rollup of 9 pull requests

Successful merges:

r? @ghost @rustbot modify labels: rollup

bors added a commit that referenced this pull request

May 26, 2025

@bors

Rollup of 8 pull requests

Successful merges:

r? @ghost @rustbot modify labels: rollup

rust-timer added a commit that referenced this pull request

May 26, 2025

@rust-timer

Rollup merge of #134696 - ChrisDenton:normalize-lexically, r=workingjubilee

Implement normalize_lexically

Implements #134694

This is, I think, the most straightforward implementation I could do, which will hopefully more easily allow experimentation if we decide to change the design here.

github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this pull request

May 30, 2025

@jhpratt

…=workingjubilee

Implement normalize_lexically

Implements rust-lang#134694

This is, I think, the most straightforward implementation I could do, which will hopefully more easily allow experimentation if we decide to change the design here.

Labels

S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

T-libs

Relevant to the library team, which will review and decide on the PR/issue.