MCPcopy Create free account
hub / github.com/astral-sh/ruff / parse_string

Method parse_string

crates/ruff_python_parser/src/parser/expression.rs:1401–1435  ·  view source on GitHub ↗

Parses a single string, byte literal, f-string, or t-string.

(&mut self)

Source from the content-addressed store, hash-verified

1399
1400 /// Parses a single string, byte literal, f-string, or t-string.
1401 fn parse_string(&mut self) -> StringType {
1402 if self.at(TokenKind::String) {
1403 self.parse_string_or_byte_literal()
1404 } else if self.at(TokenKind::FStringStart) {
1405 StringType::FString(
1406 self.parse_interpolated_string(InterpolatedStringKind::FString)
1407 .into(),
1408 )
1409 } else if self.at(TokenKind::TStringStart) {
1410 // test_ok template_strings_py314
1411 // # parse_options: {"target-version": "3.14"}
1412 // t"{hey}"
1413 // t'{there}'
1414 // t"""what's
1415 // happening?"""
1416
1417 // test_err template_strings_py313
1418 // # parse_options: {"target-version": "3.13"}
1419 // t"{hey}"
1420 // t'{there}'
1421 // t"""what's
1422 // happening?"""
1423 let string_type = StringType::TString(
1424 self.parse_interpolated_string(InterpolatedStringKind::TString)
1425 .into(),
1426 );
1427 self.add_unsupported_syntax_error(
1428 UnsupportedSyntaxErrorKind::TemplateStrings,
1429 string_type.range(),
1430 );
1431 string_type
1432 } else {
1433 unreachable!("Expected to parse a string")
1434 }
1435 }
1436
1437 /// Handles implicitly concatenated strings.
1438 ///

Callers 1

parse_stringsMethod · 0.45

Calls 7

TStringClass · 0.85
FStringClass · 0.50
atMethod · 0.45
rangeMethod · 0.45

Tested by

no test coverage detected