MCPcopy Create free account
hub / github.com/dylan-sutton-chavez/edge-python / name

Method name

compiler/src/modules/parser/expr.rs:243–272  ·  view source on GitHub ↗

Name: assignment, walrus `:=`, call, or plain load. */

(&mut self, t: Token)

Source from the content-addressed store, hash-verified

241
242 /* Name: assignment, walrus `:=`, call, or plain load. */
243 pub(super) fn name(&mut self, t: Token) {
244 let name = self.lexeme(&t).to_string();
245 match self.peek() {
246 // In f-string context, `=` is the debug marker `f"{x=}"`, not assignment.
247 Some(TokenType::Equal) if !self.in_fstring_expr => {
248 self.assign(name.clone());
249 self.emit_load_ssa(name);
250 }
251 Some(TokenType::ColonEqual) => {
252 self.advance();
253 self.expr();
254 if self.globals_decl.contains(&name) {
255 // Walrus must honor an enclosing `global` declaration.
256 let i = self.chunk.push_name(&name);
257 self.chunk.emit(OpCode::StoreGlobal, i);
258 self.chunk.emit(OpCode::LoadGlobal, i);
259 } else {
260 let ver = self.increment_version(&name);
261 let i = self.push_ssa_name(&name, ver);
262 self.chunk.emit(OpCode::StoreName, i);
263 self.chunk.emit(OpCode::LoadName, i);
264 }
265 }
266 Some(TokenType::Lpar) => {
267 let _ = self.call(name);
268 }
269 _ => self.emit_load_ssa(name),
270 }
271 self.postfix_tail();
272 }
273
274 fn parse_int_prefix(s: &str) -> (&str, u32) {
275 if let Some(h) = s.strip_prefix("0x").or_else(|| s.strip_prefix("0X")) { (h, 16) }

Callers 2

parse_argsMethod · 0.45
parse_atomMethod · 0.45

Calls 13

lexemeMethod · 0.80
assignMethod · 0.80
emit_load_ssaMethod · 0.80
advanceMethod · 0.80
exprMethod · 0.80
push_nameMethod · 0.80
emitMethod · 0.80
increment_versionMethod · 0.80
push_ssa_nameMethod · 0.80
postfix_tailMethod · 0.80
peekMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected