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

Method parse_string

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

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

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