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

Method parse_dotted_name

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

Parses a dotted name. A dotted name is a sequence of identifiers separated by a single dot.

(&mut self)

Source from the content-addressed store, hash-verified

826 ///
827 /// A dotted name is a sequence of identifiers separated by a single dot.
828 fn parse_dotted_name(&mut self) -> ast::Identifier {
829 let start = self.node_start();
830
831 let first = self.parse_identifier();
832 if !self.at(TokenKind::Dot) {
833 return first;
834 }
835
836 let snapshot = self.name_buffer.len();
837 self.name_buffer.push_str(&first.id);
838 let mut progress = ParserProgress::default();
839
840 while self.eat(TokenKind::Dot) {
841 progress.assert_progressing(self);
842
843 // test_err dotted_name_multiple_dots
844 // import a..b
845 // import a...b
846 self.name_buffer.push('.');
847 let identifier = self.parse_identifier();
848 self.name_buffer.push_str(&identifier.id);
849 }
850
851 let id = self.name_interner.intern(&self.name_buffer[snapshot..]);
852 self.name_buffer.truncate(snapshot);
853
854 // test_ok dotted_name_normalized_spaces
855 // import a.b.c
856 // import a . b . c
857 ast::Identifier {
858 id,
859 range: self.node_range(start),
860 node_index: AtomicNodeIndex::NONE,
861 }
862 }
863
864 /// Parses a `pass` statement.
865 ///

Callers 2

parse_aliasMethod · 0.80

Calls 12

node_startMethod · 0.80
parse_identifierMethod · 0.80
push_strMethod · 0.80
assert_progressingMethod · 0.80
truncateMethod · 0.80
node_rangeMethod · 0.80
defaultFunction · 0.50
atMethod · 0.45
lenMethod · 0.45
eatMethod · 0.45
pushMethod · 0.45
internMethod · 0.45

Tested by

no test coverage detected