https://github.com/rust-lang/rust/pull/145602 오늘의 기여

r#"test"#suffix 같이 raw 문자열 리터럴에 유효하지 않은 접미사가 있을 때, 적절한 오류 메시지를 출력하지 못하는 문제를 수정했다. 이것저것 테스트 해본 결과 접미사 바로 뒤에 다른 토큰이 따라오는 경우에만 이 현상이 발생했다.

처음에는 렉서 단에서 유효하지 않은 접미사가 있는지 감지하도록 했지만, LitKind::from_token_lit에서도 접미사를 검사하고 있어서 중복으로 오류 메시지가 생성되는 문제가 발생했고, 추가로 attribute를 파싱할 때 시원하게 다 터지는 문제가 발생해서 이건 좋은 접근 방법이 아니였다.

그래서 대안으로 parse_expr_lit 함수를 수정하고 LitKind::from_token_lit을 사용해 파서 쪽에서 리터럴을 검증하고 적절하게 오류를 생성하도록 했다. https://github.com/rust-lang/rust/blob/8365fcb2b840c95eeb0bc377af8bd498fad22245/compiler/rustc_parse/src/parser/expr.rs#L1561-L1570

1

If you have a fediverse account, you can reply to this note from your own instance. Search https://hackers.pub/ap/notes/0198c299-1614-7bf9-9e91-efc760aa4a9c on your instance and reply to it.