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

Method parse_string

crates/ruff_python_parser/src/parser/expression.rs:1397–1431  ·  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

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

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