Avoid panics for implicitly concatenated forward references (#3700)

This commit is contained in:
Charlie Marsh 2023-03-23 19:13:50 -04:00 committed by GitHub
parent 028329854b
commit 0f95056f13
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 28 additions and 24 deletions

View file

@ -93,15 +93,14 @@ pub fn parse_type_annotation(
locator: &Locator,
) -> Result<(Expr, AnnotationKind)> {
let expression = locator.slice(range);
let body = str::raw_contents(expression);
if body == value {
if str::raw_contents(expression).map_or(false, |body| body == value) {
// The annotation is considered "simple" if and only if the raw representation (e.g.,
// `List[int]` within "List[int]") exactly matches the parsed representation. This
// isn't the case, e.g., for implicit concatenations, or for annotations that contain
// escaped quotes.
let leading_quote = str::leading_quote(expression).unwrap();
let expr = parser::parse_expression_located(
body,
value,
"<filename>",
Location::new(
range.location.row(),