shellsim 0.1.12__tar.gz → 0.1.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {shellsim-0.1.12 → shellsim-0.1.14}/Cargo.lock +1 -1
- {shellsim-0.1.12 → shellsim-0.1.14}/Cargo.toml +1 -1
- {shellsim-0.1.12 → shellsim-0.1.14}/PKG-INFO +1 -1
- {shellsim-0.1.12 → shellsim-0.1.14}/python/native/Cargo.lock +2 -2
- {shellsim-0.1.12 → shellsim-0.1.14}/python/native/Cargo.toml +1 -1
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/protocol.rs +63 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/asyncio.py +371 -38
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/calls.rs +14 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/LICENSE +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/README.md +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/pyproject.toml +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/python/native/src/lib.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/python/shellsim/__init__.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/python/shellsim/__main__.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/python/shellsim/_api.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/python/shellsim/_cli.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/python/shellsim/py.typed +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/python/shellsim/python.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/rust-toolchain.toml +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/bin/shellsim-python.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/clock.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/archives.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/awk/ast.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/awk/eval.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/awk/lexer.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/awk/parser.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/awk.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/builtins.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/dd.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/echo.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/find.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/fs.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/apply.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/commit.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/compare.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/config.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/conflict.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/diff.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/ignore.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/import.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/log.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/merge.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/mod.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/plumbing.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/rebase.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/refs.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/repo.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/stash.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/switch.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/git/worktree.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/hashing.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/makecmd.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/mod.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/net.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/options.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/patch.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/pkg.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/printf.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/proc.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/regex_compat.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/rgcmd.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/sed.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/sort.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/system.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/tarcmd.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/text.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/unavailable.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/util.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/commands/zipcmd.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/descriptors.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/exec.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/expand.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/harness.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/harness_manager.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/hashes.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/host_ingest.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/interp.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/jqcmd.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/lib.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/main.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/mcp.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/net.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/netcmd.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/process.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/pseudo_fs.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/ast.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/bytecode.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/compiler.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/filesystem.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/heap.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/http.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/lexer.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/mapping.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/mod.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/native.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/number.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/object_model.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/parser.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/process.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/slice.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/source.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/argparse.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/asyncio.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/base64.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/bisect.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/collections.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/core.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/dataclasses.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/enum.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/frozen.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/functools.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/hashlib.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/heapq.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/http.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/importlib.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/itertools.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/json.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/math.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/mod.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/numpy.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/os.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/pytest.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/re.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/abc.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/base64.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/cmath.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/codecs.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/collections.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/complex.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/copy.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/csv.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/datetime.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/glob.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/hashlib.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/http.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/http_client.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/importlib.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/io.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/json.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/logging.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/numpy_random.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/os.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/pathlib.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/pytest.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/random.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/shutil.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/statistics.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/struct.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/subprocess.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/tempfile.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/textwrap.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/urllib.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/urllib_error.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/urllib_request.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/uuid.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/zipfile.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/source/zlib.py +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/string.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/struct.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/subprocess.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/sys.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/time.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/typing.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/unittest.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/vfs.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/stdlib/zlib.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/string.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/token.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/dispatch.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/host.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/iteration.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/namespace.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/native_runtime.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/objects.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm/operations.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/python/vm.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/resources.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/sandbox.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/scenario.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/scheduler.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/shell.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/telemetry.rs +0 -0
- {shellsim-0.1.12 → shellsim-0.1.14}/src/vfs.rs +0 -0
|
@@ -406,7 +406,7 @@ dependencies = [
|
|
|
406
406
|
|
|
407
407
|
[[package]]
|
|
408
408
|
name = "shellsim"
|
|
409
|
-
version = "0.1.
|
|
409
|
+
version = "0.1.14"
|
|
410
410
|
dependencies = [
|
|
411
411
|
"base64",
|
|
412
412
|
"crc32fast",
|
|
@@ -427,7 +427,7 @@ dependencies = [
|
|
|
427
427
|
|
|
428
428
|
[[package]]
|
|
429
429
|
name = "shellsim-python-bindings"
|
|
430
|
-
version = "0.1.
|
|
430
|
+
version = "0.1.14"
|
|
431
431
|
dependencies = [
|
|
432
432
|
"pyo3",
|
|
433
433
|
"serde",
|
|
@@ -20,6 +20,25 @@ pub fn display(heap: &Heap, value: &Value) -> Result<String, String> {
|
|
|
20
20
|
if let Some((kind, message)) = exception_parts(heap, value)? {
|
|
21
21
|
return Ok(if message.is_empty() { kind } else { message });
|
|
22
22
|
}
|
|
23
|
+
if let Some((_, args)) = user_exception_parts(heap, value)? {
|
|
24
|
+
return match args.as_slice() {
|
|
25
|
+
[] => Ok(String::new()),
|
|
26
|
+
[only] => {
|
|
27
|
+
if let Some(value) = string_value(heap, only)? {
|
|
28
|
+
Ok(value)
|
|
29
|
+
} else {
|
|
30
|
+
repr(heap, only)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
_ => {
|
|
34
|
+
let values = args
|
|
35
|
+
.iter()
|
|
36
|
+
.map(|value| repr(heap, value))
|
|
37
|
+
.collect::<Result<Vec<_>, _>>()?;
|
|
38
|
+
Ok(format!("({})", values.join(", ")))
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
23
42
|
repr(heap, value)
|
|
24
43
|
}
|
|
25
44
|
|
|
@@ -100,6 +119,41 @@ pub fn exception_parts(heap: &Heap, value: &Value) -> Result<Option<(String, Str
|
|
|
100
119
|
})
|
|
101
120
|
}
|
|
102
121
|
|
|
122
|
+
fn user_exception_parts(
|
|
123
|
+
heap: &Heap,
|
|
124
|
+
value: &Value,
|
|
125
|
+
) -> Result<Option<(String, Vec<Value>)>, String> {
|
|
126
|
+
let Some(id) = value.object_id() else {
|
|
127
|
+
return Ok(None);
|
|
128
|
+
};
|
|
129
|
+
let Object::Instance { class, .. } = heap.get(id)? else {
|
|
130
|
+
return Ok(None);
|
|
131
|
+
};
|
|
132
|
+
let Object::Class {
|
|
133
|
+
name,
|
|
134
|
+
exception_base,
|
|
135
|
+
..
|
|
136
|
+
} = heap.get(*class)?
|
|
137
|
+
else {
|
|
138
|
+
return Ok(None);
|
|
139
|
+
};
|
|
140
|
+
if exception_base.is_none() {
|
|
141
|
+
return Ok(None);
|
|
142
|
+
}
|
|
143
|
+
let args = if let Some(symbol) = heap.symbol_id("args") {
|
|
144
|
+
heap.attribute_by_symbol(id, symbol)?
|
|
145
|
+
.and_then(|value| value.object_id())
|
|
146
|
+
.and_then(|args| match heap.get(args).ok()? {
|
|
147
|
+
Object::Tuple(values) => Some(values.clone()),
|
|
148
|
+
_ => None,
|
|
149
|
+
})
|
|
150
|
+
.unwrap_or_default()
|
|
151
|
+
} else {
|
|
152
|
+
Vec::new()
|
|
153
|
+
};
|
|
154
|
+
Ok(Some((name.clone(), args)))
|
|
155
|
+
}
|
|
156
|
+
|
|
103
157
|
fn bigint_value<'a>(heap: &'a Heap, value: &Value) -> Option<&'a BigInt> {
|
|
104
158
|
let id = value.object_id()?;
|
|
105
159
|
match heap.get(id).ok()? {
|
|
@@ -244,6 +298,15 @@ fn render(heap: &Heap, value: &Value, active: &mut BTreeSet<ObjectId>) -> Result
|
|
|
244
298
|
Object::Instance { class, payload, .. } => match payload {
|
|
245
299
|
InstancePayload::Int(value) => value.to_string(),
|
|
246
300
|
InstancePayload::Object => match heap.get(*class)? {
|
|
301
|
+
Object::Class {
|
|
302
|
+
name,
|
|
303
|
+
exception_base: Some(_),
|
|
304
|
+
..
|
|
305
|
+
} => {
|
|
306
|
+
let (_, args) = user_exception_parts(heap, value)?
|
|
307
|
+
.ok_or("exception instance lost its native base")?;
|
|
308
|
+
format!("{name}({})", render_values(heap, &args, active)?.join(", "))
|
|
309
|
+
}
|
|
247
310
|
Object::Class { name, .. } => format!("<{name} object>"),
|
|
248
311
|
_ => return Err("instance has an invalid class".into()),
|
|
249
312
|
},
|