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

Method parse_string

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

1317
1318 /// Parses a single string, byte literal, f-string, or t-string.
1319 fn parse_string(&mut self) -> StringType {
1320 if self.at(TokenKind::String) {
1321 self.parse_string_or_byte_literal()
1322 } else if self.at(TokenKind::FStringStart) {
1323 StringType::FString(
1324 self.parse_interpolated_string(InterpolatedStringKind::FString)
1325 .into(),
1326 )
1327 } else if self.at(TokenKind::TStringStart) {
1328 // test_ok template_strings_py314
1329 // # parse_options: {"target-version": "3.14"}
1330 // t"{hey}"
1331 // t'{there}'
1332 // t"""what's
1333 // happening?"""
1334
1335 // test_err template_strings_py313
1336 // # parse_options: {"target-version": "3.13"}
1337 // t"{hey}"
1338 // t'{there}'
1339 // t"""what's
1340 // happening?"""
1341 let string_type = StringType::TString(
1342 self.parse_interpolated_string(InterpolatedStringKind::TString)
1343 .into(),
1344 );
1345 self.add_unsupported_syntax_error(
1346 UnsupportedSyntaxErrorKind::TemplateStrings,
1347 string_type.range(),
1348 );
1349 string_type
1350 } else {
1351 unreachable!("Expected to parse a string")
1352 }
1353 }
1354
1355 /// Handles implicitly concatenated strings.
1356 ///

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