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

Method parse_simple_statement

crates/ruff_python_parser/src/parser/statement.rs:268–391  ·  view source on GitHub ↗

Parses a simple statement. See:

(&mut self)

Source from the content-addressed store, hash-verified

266 ///
267 /// See: <https://docs.python.org/3/reference/simple_stmts.html>
268 fn parse_simple_statement(&mut self) -> Stmt {
269 match self.current_token_kind() {
270 TokenKind::Return => Stmt::Return(self.parse_return_statement()),
271 TokenKind::Import => {
272 let start = self.node_start();
273 Stmt::Import(self.parse_import_statement(start, false))
274 }
275 TokenKind::From => {
276 let start = self.node_start();
277 Stmt::ImportFrom(self.parse_from_import_statement(start, false))
278 }
279 TokenKind::Pass => Stmt::Pass(self.parse_pass_statement()),
280 TokenKind::Continue => Stmt::Continue(self.parse_continue_statement()),
281 TokenKind::Break => Stmt::Break(self.parse_break_statement()),
282 TokenKind::Raise => Stmt::Raise(self.parse_raise_statement()),
283 TokenKind::Del => Stmt::Delete(self.parse_delete_statement()),
284 TokenKind::Assert => Stmt::Assert(self.parse_assert_statement()),
285 TokenKind::Global => Stmt::Global(self.parse_global_statement()),
286 TokenKind::Nonlocal => Stmt::Nonlocal(self.parse_nonlocal_statement()),
287 TokenKind::IpyEscapeCommand => {
288 Stmt::IpyEscapeCommand(self.parse_ipython_escape_command_statement())
289 }
290 token => {
291 if token == TokenKind::Lazy {
292 let start = self.node_start();
293 let lazy_range = self.current_token_range();
294
295 match self.peek() {
296 // test_ok lazy_import_stmt_py315
297 // # parse_options: {"target-version": "3.15"}
298 // lazy import foo
299 // lazy import foo as bar
300 // lazy from bar import baz
301 // lazy from sys import x as y
302 // lazy = 1
303 // import foo as lazy
304 // from lazy import qux
305
306 // test_ok lazy_import_relative_py315
307 // # parse_options: {"target-version": "3.15"}
308 // lazy from . import basic2
309 // lazy from .basic2 import x, f
310 // lazy from . import b, x
311
312 // test_ok lazy_import_soft_keyword_split_py315
313 // # parse_options: {"target-version": "3.15"}
314 // lazy
315 // import os
316 //
317 // lazy # comment
318 // from sys import path
319
320 // test_err lazy_import_stmt_py314
321 // # parse_options: {"target-version": "3.14"}
322 // lazy import foo
323 // lazy from bar import baz
324 TokenKind::Import => {
325 self.bump(TokenKind::Lazy);

Callers 2

Calls 15

AssertClass · 0.85
ExprEnum · 0.85
current_token_kindMethod · 0.80
node_startMethod · 0.80
parse_pass_statementMethod · 0.80
parse_break_statementMethod · 0.80
parse_raise_statementMethod · 0.80

Tested by

no test coverage detected