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:267–390  ·  view source on GitHub ↗

Parses a simple statement. See:

(&mut self)

Source from the content-addressed store, hash-verified

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