Record an instantiation and return its mangled enum name. Idempotent.
(&mut self, base: &str, args: &[Type])
| 1247 | function_returns, |
| 1248 | structs, |
| 1249 | )?; |
| 1250 | } |
| 1251 | // A generic receiver has no struct name for later method resolution; |
| 1252 | // rewrite `recv.method(..)` to a direct generic call so it specializes. |
| 1253 | let mut rewritten = None; |
| 1254 | if let Expression::Primary(PrimaryExpr::FieldAccess { expr, field }) = &**callee |
| 1255 | && let Some(receiver_ty) = infer_expression_type( |
| 1256 | expr, |
| 1257 | environment, |
| 1258 | generic_signatures, |
| 1259 | function_returns, |
| 1260 | structs, |
| 1261 | ) |
| 1262 | { |
| 1263 | let owner = match &receiver_ty { |
| 1264 | Type::Named { name, .. } => Some(name.to_string()), |
| 1265 | Type::Pointer(inner) => match inner.as_ref() { |
| 1266 | Type::Named { name, .. } => Some(name.to_string()), |
no test coverage detected