diff --git a/benches/microbenchmarks.rs b/benches/microbenchmarks.rs index 377196e8bd..eb2ea66a33 100644 --- a/benches/microbenchmarks.rs +++ b/benches/microbenchmarks.rs @@ -3,7 +3,9 @@ use criterion::{ criterion_group, criterion_main, BatchSize, BenchmarkGroup, BenchmarkId, Criterion, Throughput, }; use rustpython_compiler::Mode; -use rustpython_vm::{utils::ascii, InitParameter, Interpreter, ItemProtocol, PyResult, PySettings}; +use rustpython_vm::{ + common::ascii, InitParameter, Interpreter, ItemProtocol, PyResult, PySettings, +}; use std::path::{Path, PathBuf}; use std::{ffi, fs, io}; diff --git a/common/src/lib.rs b/common/src/lib.rs index 7904ca8cdc..c93c421bd5 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -11,3 +11,7 @@ pub mod lock; pub mod rc; pub mod static_cell; pub mod str; + +pub mod vendored { + pub use ascii; +} diff --git a/common/src/str.rs b/common/src/str.rs index 15ed054753..f31e6cd96a 100644 --- a/common/src/str.rs +++ b/common/src/str.rs @@ -82,6 +82,29 @@ pub fn to_ascii(value: &str) -> String { ascii } +#[doc(hidden)] +pub const fn bytes_is_ascii(x: &str) -> bool { + let x = x.as_bytes(); + let mut i = 0; + while i < x.len() { + if !x[i].is_ascii() { + return false; + } + i += 1; + } + true +} + +#[macro_export] +macro_rules! ascii { + ($x:literal) => {{ + const _: () = { + ["not ascii"][!$crate::str::bytes_is_ascii($x) as usize]; + }; + unsafe { $crate::vendored::ascii::AsciiStr::from_ascii_unchecked($x.as_bytes()) } + }}; +} + #[cfg(test)] mod tests { use super::*; diff --git a/vm/src/builtins/dict.rs b/vm/src/builtins/dict.rs index b29237c69d..b3541dbe27 100644 --- a/vm/src/builtins/dict.rs +++ b/vm/src/builtins/dict.rs @@ -1,5 +1,6 @@ use super::{IterStatus, PySet, PyStrRef, PyTypeRef}; use crate::{ + common::ascii, dictdatatype::{self, DictKey}, exceptions::PyBaseExceptionRef, function::{ArgIterable, FuncArgs, KwArgs, OptionalArg}, @@ -363,7 +364,7 @@ impl PyDict { } else { let err_msg = vm .ctx - .new_ascii_literal(crate::utils::ascii!("popitem(): dictionary is empty")); + .new_ascii_literal(ascii!("popitem(): dictionary is empty")); Err(vm.new_key_error(err_msg)) } } diff --git a/vm/src/builtins/pystr.rs b/vm/src/builtins/pystr.rs index 21add4ac60..425b30e03f 100644 --- a/vm/src/builtins/pystr.rs +++ b/vm/src/builtins/pystr.rs @@ -20,8 +20,11 @@ use bstr::ByteSlice; use crossbeam_utils::atomic::AtomicCell; use itertools::Itertools; use num_traits::ToPrimitive; -use rustpython_common::atomic::{self, PyAtomic, Radium}; -use rustpython_common::hash; +use rustpython_common::{ + ascii, + atomic::{self, PyAtomic, Radium}, + hash, +}; use std::mem::size_of; use std::ops::Range; use std::string::ToString; @@ -212,8 +215,7 @@ impl PyStrIterator { Ok(vm.ctx.new_tuple(match self.status.load() { Exhausted => vec![ iter, - vm.ctx - .new_tuple(vec![vm.ctx.new_ascii_literal(crate::utils::ascii!(""))]), + vm.ctx.new_tuple(vec![vm.ctx.new_ascii_literal(ascii!(""))]), ], Active => vec![ iter, @@ -979,7 +981,7 @@ impl PyStr { if has_mid { sep.into_object() } else { - vm.ctx.new_ascii_literal(crate::utils::ascii!("")) + vm.ctx.new_ascii_literal(ascii!("")) }, self.new_substr(back), ) @@ -998,7 +1000,7 @@ impl PyStr { if has_mid { sep.into_object() } else { - vm.ctx.new_ascii_literal(crate::utils::ascii!("")) + vm.ctx.new_ascii_literal(ascii!("")) }, self.new_substr(back), ) @@ -1544,11 +1546,7 @@ mod tests { table.set_item("a", vm.ctx.new_utf8_str("🎅"), &vm).unwrap(); table.set_item("b", vm.ctx.none(), &vm).unwrap(); table - .set_item( - "c", - vm.ctx.new_ascii_literal(crate::utils::ascii!("xda")), - &vm, - ) + .set_item("c", vm.ctx.new_ascii_literal(ascii!("xda")), &vm) .unwrap(); let translated = PyStr::maketrans( table.into_object(), diff --git a/vm/src/builtins/pytype.rs b/vm/src/builtins/pytype.rs index 1c8e5a50a1..432e088eef 100644 --- a/vm/src/builtins/pytype.rs +++ b/vm/src/builtins/pytype.rs @@ -2,7 +2,7 @@ use super::{ mappingproxy::PyMappingProxy, object, PyClassMethod, PyDictRef, PyInt, PyList, PyStaticMethod, PyStr, PyStrRef, PyTuple, PyTupleRef, PyWeak, }; -use crate::common::lock::PyRwLock; +use crate::common::{ascii, lock::PyRwLock}; use crate::{ function::{FuncArgs, KwArgs, OptionalArg}, slots::{self, Callable, PyTpFlags, PyTypeSlots, SlotGetattro, SlotSetattro}, @@ -404,7 +404,7 @@ impl PyType { Some(found) } }) - .unwrap_or_else(|| vm.ctx.new_ascii_literal(crate::utils::ascii!("builtins"))) + .unwrap_or_else(|| vm.ctx.new_ascii_literal(ascii!("builtins"))) } #[pyproperty(magic, setter)] diff --git a/vm/src/builtins/set.rs b/vm/src/builtins/set.rs index d24b6a9a48..eeb6630ffe 100644 --- a/vm/src/builtins/set.rs +++ b/vm/src/builtins/set.rs @@ -2,7 +2,7 @@ * Builtin set type with a sequence of unique items. */ use super::{IterStatus, PyDictRef, PyTypeRef}; -use crate::common::{hash::PyHash, rc::PyRc}; +use crate::common::{ascii, hash::PyHash, rc::PyRc}; use crate::{ dictdatatype::{self, DictSize}, function::{ArgIterable, FuncArgs, OptionalArg, PosArgs}, @@ -235,9 +235,7 @@ impl PySetInner { if let Some((key, _)) = self.content.pop_back() { Ok(key) } else { - let err_msg = vm - .ctx - .new_ascii_literal(crate::utils::ascii!("pop from an empty set")); + let err_msg = vm.ctx.new_ascii_literal(ascii!("pop from an empty set")); Err(vm.new_key_error(err_msg)) } } diff --git a/vm/src/codecs.rs b/vm/src/codecs.rs index 9abb2a6421..28d8db8108 100644 --- a/vm/src/codecs.rs +++ b/vm/src/codecs.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use std::ops::Range; use crate::builtins::{PyBytesRef, PyStr, PyStrRef, PyTuple, PyTupleRef}; -use crate::common::lock::PyRwLock; +use crate::common::{ascii, lock::PyRwLock}; use crate::exceptions::PyBaseExceptionRef; use crate::VirtualMachine; use crate::{IntoPyObject, PyContext, PyObjectRef, PyResult, PyValue, TryFromObject, TypeProtocol}; @@ -367,10 +367,7 @@ fn strict_errors(err: PyObjectRef, vm: &VirtualMachine) -> PyResult { fn ignore_errors(err: PyObjectRef, vm: &VirtualMachine) -> PyResult<(PyObjectRef, usize)> { if is_encode_ish_err(&err, vm) || is_decode_err(&err, vm) { let range = extract_unicode_error_range(&err, vm)?; - Ok(( - vm.ctx.new_ascii_literal(crate::utils::ascii!("")), - range.end, - )) + Ok((vm.ctx.new_ascii_literal(ascii!("")), range.end)) } else { Err(bad_err_type(err, vm)) } diff --git a/vm/src/dictdatatype.rs b/vm/src/dictdatatype.rs index 511f9bb094..04ed619e00 100644 --- a/vm/src/dictdatatype.rs +++ b/vm/src/dictdatatype.rs @@ -3,11 +3,13 @@ use crate::builtins::{PyStr, PyStrRef}; /// Inspired by: https://morepypy.blogspot.com/2015/01/faster-more-memory-efficient-and-more.html /// And: https://www.youtube.com/watch?v=p33CVV29OG8 /// And: http://code.activestate.com/recipes/578375/ -use crate::common::lock::{PyRwLock, PyRwLockReadGuard, PyRwLockWriteGuard}; +use crate::common::{ + hash, + lock::{PyRwLock, PyRwLockReadGuard, PyRwLockWriteGuard}, +}; use crate::vm::VirtualMachine; use crate::{IdProtocol, IntoPyObject, PyObjectRef, PyRefExact, PyResult, TypeProtocol}; use crossbeam_utils::atomic::AtomicCell; -use rustpython_common::hash; use std::fmt; use std::mem::size_of; @@ -766,6 +768,7 @@ fn extract_dict_entry(option_entry: &Option>) -> &DictEntry { #[cfg(test)] mod tests { use super::{Dict, DictKey}; + use crate::common::ascii; use crate::Interpreter; #[test] @@ -775,12 +778,12 @@ mod tests { assert_eq!(0, dict.len()); let key1 = vm.ctx.new_bool(true); - let value1 = vm.ctx.new_ascii_literal(crate::utils::ascii!("abc")); + let value1 = vm.ctx.new_ascii_literal(ascii!("abc")); dict.insert(&vm, key1.clone(), value1.clone()).unwrap(); assert_eq!(1, dict.len()); - let key2 = vm.ctx.new_ascii_literal(crate::utils::ascii!("x")); - let value2 = vm.ctx.new_ascii_literal(crate::utils::ascii!("def")); + let key2 = vm.ctx.new_ascii_literal(ascii!("x")); + let value2 = vm.ctx.new_ascii_literal(ascii!("def")); dict.insert(&vm, key2.clone(), value2.clone()).unwrap(); assert_eq!(2, dict.len()); diff --git a/vm/src/macros.rs b/vm/src/macros.rs index ae3dcffb22..6997e9231f 100644 --- a/vm/src/macros.rs +++ b/vm/src/macros.rs @@ -249,13 +249,3 @@ cfg_if::cfg_if! { } } } - -macro_rules! ascii { - ($x:literal) => {{ - const _: () = { - ["not ascii"][!rustpython_vm::utils::bytes_is_ascii($x) as usize]; - }; - unsafe { ascii::AsciiStr::from_ascii_unchecked($x.as_bytes()) } - }}; -} -pub use ascii; diff --git a/vm/src/py_io.rs b/vm/src/py_io.rs index 007f1e4af0..571d7e8c8f 100644 --- a/vm/src/py_io.rs +++ b/vm/src/py_io.rs @@ -1,5 +1,6 @@ use crate::builtins::bytes::PyBytes; use crate::builtins::pystr::PyStr; +use crate::common::ascii; use crate::exceptions::PyBaseExceptionRef; use crate::VirtualMachine; use crate::{PyObjectRef, PyResult}; @@ -65,9 +66,7 @@ pub fn file_readline(obj: &PyObjectRef, size: Option, vm: &VirtualMachine let eof_err = || { vm.new_exception( vm.ctx.exceptions.eof_error.clone(), - vec![vm - .ctx - .new_ascii_literal(crate::utils::ascii!("EOF when reading a line"))], + vec![vm.ctx.new_ascii_literal(ascii!("EOF when reading a line"))], ) }; let ret = match_class!(match ret { diff --git a/vm/src/stdlib/ast/gen.rs b/vm/src/stdlib/ast/gen.rs index de10d55590..544ced4c80 100644 --- a/vm/src/stdlib/ast/gen.rs +++ b/vm/src/stdlib/ast/gen.rs @@ -1,6 +1,7 @@ // File automatically generated by ast/asdl_rs.py. use super::*; +use crate::common::ascii; #[pyclass(module = "_ast", name = "Module", base = "AstNode")] struct NodeModule; @@ -8,7 +9,7 @@ struct NodeModule; impl NodeModule { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("type_ignores"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("type_ignores"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -18,7 +19,7 @@ struct NodeInteractive; impl NodeInteractive { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("body"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("body"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -28,7 +29,7 @@ struct NodeExpression; impl NodeExpression { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("body"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("body"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -38,7 +39,7 @@ struct NodeFunctionType; impl NodeFunctionType { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("argtypes")),ctx.new_ascii_literal(crate::utils::ascii!("returns"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("argtypes")),ctx.new_ascii_literal(ascii!("returns"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -48,8 +49,8 @@ struct NodeFunctionDef; impl NodeFunctionDef { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("name")),ctx.new_ascii_literal(crate::utils::ascii!("args")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("decorator_list")),ctx.new_ascii_literal(crate::utils::ascii!("returns")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("name")),ctx.new_ascii_literal(ascii!("args")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("decorator_list")),ctx.new_ascii_literal(ascii!("returns")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "AsyncFunctionDef", base = "AstNode")] @@ -58,8 +59,8 @@ struct NodeAsyncFunctionDef; impl NodeAsyncFunctionDef { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("name")),ctx.new_ascii_literal(crate::utils::ascii!("args")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("decorator_list")),ctx.new_ascii_literal(crate::utils::ascii!("returns")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("name")),ctx.new_ascii_literal(ascii!("args")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("decorator_list")),ctx.new_ascii_literal(ascii!("returns")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "ClassDef", base = "AstNode")] @@ -68,8 +69,8 @@ struct NodeClassDef; impl NodeClassDef { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("name")),ctx.new_ascii_literal(crate::utils::ascii!("bases")),ctx.new_ascii_literal(crate::utils::ascii!("keywords")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("decorator_list"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("name")),ctx.new_ascii_literal(ascii!("bases")),ctx.new_ascii_literal(ascii!("keywords")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("decorator_list"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Return", base = "AstNode")] @@ -78,8 +79,8 @@ struct NodeReturn; impl NodeReturn { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Delete", base = "AstNode")] @@ -88,8 +89,8 @@ struct NodeDelete; impl NodeDelete { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("targets"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("targets"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Assign", base = "AstNode")] @@ -98,8 +99,8 @@ struct NodeAssign; impl NodeAssign { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("targets")),ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("targets")),ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "AugAssign", base = "AstNode")] @@ -108,8 +109,8 @@ struct NodeAugAssign; impl NodeAugAssign { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("target")),ctx.new_ascii_literal(crate::utils::ascii!("op")),ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("target")),ctx.new_ascii_literal(ascii!("op")),ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "AnnAssign", base = "AstNode")] @@ -118,8 +119,8 @@ struct NodeAnnAssign; impl NodeAnnAssign { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("target")),ctx.new_ascii_literal(crate::utils::ascii!("annotation")),ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("simple"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("target")),ctx.new_ascii_literal(ascii!("annotation")),ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("simple"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "For", base = "AstNode")] @@ -128,8 +129,8 @@ struct NodeFor; impl NodeFor { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("target")),ctx.new_ascii_literal(crate::utils::ascii!("iter")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("orelse")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("target")),ctx.new_ascii_literal(ascii!("iter")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("orelse")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "AsyncFor", base = "AstNode")] @@ -138,8 +139,8 @@ struct NodeAsyncFor; impl NodeAsyncFor { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("target")),ctx.new_ascii_literal(crate::utils::ascii!("iter")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("orelse")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("target")),ctx.new_ascii_literal(ascii!("iter")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("orelse")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "While", base = "AstNode")] @@ -148,8 +149,8 @@ struct NodeWhile; impl NodeWhile { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("test")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("orelse"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("test")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("orelse"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "If", base = "AstNode")] @@ -158,8 +159,8 @@ struct NodeIf; impl NodeIf { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("test")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("orelse"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("test")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("orelse"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "With", base = "AstNode")] @@ -168,8 +169,8 @@ struct NodeWith; impl NodeWith { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("items")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("items")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "AsyncWith", base = "AstNode")] @@ -178,8 +179,8 @@ struct NodeAsyncWith; impl NodeAsyncWith { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("items")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("items")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Raise", base = "AstNode")] @@ -188,8 +189,8 @@ struct NodeRaise; impl NodeRaise { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("exc")),ctx.new_ascii_literal(crate::utils::ascii!("cause"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("exc")),ctx.new_ascii_literal(ascii!("cause"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Try", base = "AstNode")] @@ -198,8 +199,8 @@ struct NodeTry; impl NodeTry { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("handlers")),ctx.new_ascii_literal(crate::utils::ascii!("orelse")),ctx.new_ascii_literal(crate::utils::ascii!("finalbody"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("handlers")),ctx.new_ascii_literal(ascii!("orelse")),ctx.new_ascii_literal(ascii!("finalbody"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Assert", base = "AstNode")] @@ -208,8 +209,8 @@ struct NodeAssert; impl NodeAssert { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("test")),ctx.new_ascii_literal(crate::utils::ascii!("msg"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("test")),ctx.new_ascii_literal(ascii!("msg"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Import", base = "AstNode")] @@ -218,8 +219,8 @@ struct NodeImport; impl NodeImport { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("names"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("names"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "ImportFrom", base = "AstNode")] @@ -228,8 +229,8 @@ struct NodeImportFrom; impl NodeImportFrom { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("module")),ctx.new_ascii_literal(crate::utils::ascii!("names")),ctx.new_ascii_literal(crate::utils::ascii!("level"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("module")),ctx.new_ascii_literal(ascii!("names")),ctx.new_ascii_literal(ascii!("level"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Global", base = "AstNode")] @@ -238,8 +239,8 @@ struct NodeGlobal; impl NodeGlobal { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("names"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("names"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Nonlocal", base = "AstNode")] @@ -248,8 +249,8 @@ struct NodeNonlocal; impl NodeNonlocal { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("names"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("names"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Expr", base = "AstNode")] @@ -258,8 +259,8 @@ struct NodeExpr; impl NodeExpr { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Pass", base = "AstNode")] @@ -269,7 +270,7 @@ impl NodePass { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { class.set_str_attr("_fields", ctx.new_list(vec![])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Break", base = "AstNode")] @@ -279,7 +280,7 @@ impl NodeBreak { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { class.set_str_attr("_fields", ctx.new_list(vec![])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Continue", base = "AstNode")] @@ -289,7 +290,7 @@ impl NodeContinue { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { class.set_str_attr("_fields", ctx.new_list(vec![])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "BoolOp", base = "AstNode")] @@ -298,8 +299,8 @@ struct NodeBoolOp; impl NodeBoolOp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("op")),ctx.new_ascii_literal(crate::utils::ascii!("values"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("op")),ctx.new_ascii_literal(ascii!("values"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "NamedExpr", base = "AstNode")] @@ -308,8 +309,8 @@ struct NodeNamedExpr; impl NodeNamedExpr { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("target")),ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("target")),ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "BinOp", base = "AstNode")] @@ -318,8 +319,8 @@ struct NodeBinOp; impl NodeBinOp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("left")),ctx.new_ascii_literal(crate::utils::ascii!("op")),ctx.new_ascii_literal(crate::utils::ascii!("right"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("left")),ctx.new_ascii_literal(ascii!("op")),ctx.new_ascii_literal(ascii!("right"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "UnaryOp", base = "AstNode")] @@ -328,8 +329,8 @@ struct NodeUnaryOp; impl NodeUnaryOp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("op")),ctx.new_ascii_literal(crate::utils::ascii!("operand"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("op")),ctx.new_ascii_literal(ascii!("operand"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Lambda", base = "AstNode")] @@ -338,8 +339,8 @@ struct NodeLambda; impl NodeLambda { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("args")),ctx.new_ascii_literal(crate::utils::ascii!("body"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("args")),ctx.new_ascii_literal(ascii!("body"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "IfExp", base = "AstNode")] @@ -348,8 +349,8 @@ struct NodeIfExp; impl NodeIfExp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("test")),ctx.new_ascii_literal(crate::utils::ascii!("body")),ctx.new_ascii_literal(crate::utils::ascii!("orelse"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("test")),ctx.new_ascii_literal(ascii!("body")),ctx.new_ascii_literal(ascii!("orelse"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Dict", base = "AstNode")] @@ -358,8 +359,8 @@ struct NodeDict; impl NodeDict { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("keys")),ctx.new_ascii_literal(crate::utils::ascii!("values"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("keys")),ctx.new_ascii_literal(ascii!("values"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Set", base = "AstNode")] @@ -368,8 +369,8 @@ struct NodeSet; impl NodeSet { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("elts"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("elts"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "ListComp", base = "AstNode")] @@ -378,8 +379,8 @@ struct NodeListComp; impl NodeListComp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("elt")),ctx.new_ascii_literal(crate::utils::ascii!("generators"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("elt")),ctx.new_ascii_literal(ascii!("generators"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "SetComp", base = "AstNode")] @@ -388,8 +389,8 @@ struct NodeSetComp; impl NodeSetComp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("elt")),ctx.new_ascii_literal(crate::utils::ascii!("generators"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("elt")),ctx.new_ascii_literal(ascii!("generators"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "DictComp", base = "AstNode")] @@ -398,8 +399,8 @@ struct NodeDictComp; impl NodeDictComp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("key")),ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("generators"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("key")),ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("generators"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "GeneratorExp", base = "AstNode")] @@ -408,8 +409,8 @@ struct NodeGeneratorExp; impl NodeGeneratorExp { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("elt")),ctx.new_ascii_literal(crate::utils::ascii!("generators"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("elt")),ctx.new_ascii_literal(ascii!("generators"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Await", base = "AstNode")] @@ -418,8 +419,8 @@ struct NodeAwait; impl NodeAwait { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Yield", base = "AstNode")] @@ -428,8 +429,8 @@ struct NodeYield; impl NodeYield { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "YieldFrom", base = "AstNode")] @@ -438,8 +439,8 @@ struct NodeYieldFrom; impl NodeYieldFrom { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Compare", base = "AstNode")] @@ -448,8 +449,8 @@ struct NodeCompare; impl NodeCompare { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("left")),ctx.new_ascii_literal(crate::utils::ascii!("ops")),ctx.new_ascii_literal(crate::utils::ascii!("comparators"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("left")),ctx.new_ascii_literal(ascii!("ops")),ctx.new_ascii_literal(ascii!("comparators"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Call", base = "AstNode")] @@ -458,8 +459,8 @@ struct NodeCall; impl NodeCall { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("func")),ctx.new_ascii_literal(crate::utils::ascii!("args")),ctx.new_ascii_literal(crate::utils::ascii!("keywords"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("func")),ctx.new_ascii_literal(ascii!("args")),ctx.new_ascii_literal(ascii!("keywords"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "FormattedValue", base = "AstNode")] @@ -468,8 +469,8 @@ struct NodeFormattedValue; impl NodeFormattedValue { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("conversion")),ctx.new_ascii_literal(crate::utils::ascii!("format_spec"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("conversion")),ctx.new_ascii_literal(ascii!("format_spec"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "JoinedStr", base = "AstNode")] @@ -478,8 +479,8 @@ struct NodeJoinedStr; impl NodeJoinedStr { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("values"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("values"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Constant", base = "AstNode")] @@ -488,8 +489,8 @@ struct NodeConstant; impl NodeConstant { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("kind"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("kind"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Attribute", base = "AstNode")] @@ -498,8 +499,8 @@ struct NodeAttribute; impl NodeAttribute { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("attr")),ctx.new_ascii_literal(crate::utils::ascii!("ctx"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("attr")),ctx.new_ascii_literal(ascii!("ctx"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Subscript", base = "AstNode")] @@ -508,8 +509,8 @@ struct NodeSubscript; impl NodeSubscript { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("slice")),ctx.new_ascii_literal(crate::utils::ascii!("ctx"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("slice")),ctx.new_ascii_literal(ascii!("ctx"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Starred", base = "AstNode")] @@ -518,8 +519,8 @@ struct NodeStarred; impl NodeStarred { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("value")),ctx.new_ascii_literal(crate::utils::ascii!("ctx"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("value")),ctx.new_ascii_literal(ascii!("ctx"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Name", base = "AstNode")] @@ -528,8 +529,8 @@ struct NodeName; impl NodeName { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("id")),ctx.new_ascii_literal(crate::utils::ascii!("ctx"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("id")),ctx.new_ascii_literal(ascii!("ctx"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "List", base = "AstNode")] @@ -538,8 +539,8 @@ struct NodeList; impl NodeList { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("elts")),ctx.new_ascii_literal(crate::utils::ascii!("ctx"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("elts")),ctx.new_ascii_literal(ascii!("ctx"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Tuple", base = "AstNode")] @@ -548,8 +549,8 @@ struct NodeTuple; impl NodeTuple { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("elts")),ctx.new_ascii_literal(crate::utils::ascii!("ctx"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("elts")),ctx.new_ascii_literal(ascii!("ctx"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Slice", base = "AstNode")] @@ -558,8 +559,8 @@ struct NodeSlice; impl NodeSlice { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lower")),ctx.new_ascii_literal(crate::utils::ascii!("upper")),ctx.new_ascii_literal(crate::utils::ascii!("step"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lower")),ctx.new_ascii_literal(ascii!("upper")),ctx.new_ascii_literal(ascii!("step"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "Load", base = "AstNode")] @@ -888,7 +889,7 @@ struct Nodecomprehension; impl Nodecomprehension { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("target")),ctx.new_ascii_literal(crate::utils::ascii!("iter")),ctx.new_ascii_literal(crate::utils::ascii!("ifs")),ctx.new_ascii_literal(crate::utils::ascii!("is_async"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("target")),ctx.new_ascii_literal(ascii!("iter")),ctx.new_ascii_literal(ascii!("ifs")),ctx.new_ascii_literal(ascii!("is_async"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -898,8 +899,8 @@ struct NodeExceptHandler; impl NodeExceptHandler { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("type")),ctx.new_ascii_literal(crate::utils::ascii!("name")),ctx.new_ascii_literal(crate::utils::ascii!("body"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("type")),ctx.new_ascii_literal(ascii!("name")),ctx.new_ascii_literal(ascii!("body"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "arguments", base = "AstNode")] @@ -908,7 +909,7 @@ struct Nodearguments; impl Nodearguments { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("posonlyargs")),ctx.new_ascii_literal(crate::utils::ascii!("args")),ctx.new_ascii_literal(crate::utils::ascii!("vararg")),ctx.new_ascii_literal(crate::utils::ascii!("kwonlyargs")),ctx.new_ascii_literal(crate::utils::ascii!("kw_defaults")),ctx.new_ascii_literal(crate::utils::ascii!("kwarg")),ctx.new_ascii_literal(crate::utils::ascii!("defaults"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("posonlyargs")),ctx.new_ascii_literal(ascii!("args")),ctx.new_ascii_literal(ascii!("vararg")),ctx.new_ascii_literal(ascii!("kwonlyargs")),ctx.new_ascii_literal(ascii!("kw_defaults")),ctx.new_ascii_literal(ascii!("kwarg")),ctx.new_ascii_literal(ascii!("defaults"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -918,8 +919,8 @@ struct Nodearg; impl Nodearg { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("arg")),ctx.new_ascii_literal(crate::utils::ascii!("annotation")),ctx.new_ascii_literal(crate::utils::ascii!("type_comment"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("arg")),ctx.new_ascii_literal(ascii!("annotation")),ctx.new_ascii_literal(ascii!("type_comment"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "keyword", base = "AstNode")] @@ -928,8 +929,8 @@ struct Nodekeyword; impl Nodekeyword { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("arg")),ctx.new_ascii_literal(crate::utils::ascii!("value"))])); - class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("col_offset")),ctx.new_ascii_literal(crate::utils::ascii!("end_lineno")),ctx.new_ascii_literal(crate::utils::ascii!("end_col_offset"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("arg")),ctx.new_ascii_literal(ascii!("value"))])); + class.set_str_attr("_attributes", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("col_offset")),ctx.new_ascii_literal(ascii!("end_lineno")),ctx.new_ascii_literal(ascii!("end_col_offset"))])); } } #[pyclass(module = "_ast", name = "alias", base = "AstNode")] @@ -938,7 +939,7 @@ struct Nodealias; impl Nodealias { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("name")),ctx.new_ascii_literal(crate::utils::ascii!("asname"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("name")),ctx.new_ascii_literal(ascii!("asname"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -948,7 +949,7 @@ struct Nodewithitem; impl Nodewithitem { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("context_expr")),ctx.new_ascii_literal(crate::utils::ascii!("optional_vars"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("context_expr")),ctx.new_ascii_literal(ascii!("optional_vars"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } @@ -958,7 +959,7 @@ struct NodeTypeIgnore; impl NodeTypeIgnore { #[extend_class] fn extend_class_with_fields(ctx: &PyContext, class: &PyTypeRef) { - class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(crate::utils::ascii!("lineno")),ctx.new_ascii_literal(crate::utils::ascii!("tag"))])); + class.set_str_attr("_fields", ctx.new_list(vec![ctx.new_ascii_literal(ascii!("lineno")),ctx.new_ascii_literal(ascii!("tag"))])); class.set_str_attr("_attributes", ctx.new_list(vec![])); } } diff --git a/vm/src/stdlib/sre.rs b/vm/src/stdlib/sre.rs index 2dfdca86c2..6c4f8853ea 100644 --- a/vm/src/stdlib/sre.rs +++ b/vm/src/stdlib/sre.rs @@ -6,7 +6,7 @@ mod _sre { builtins::{ PyCallableIterator, PyDictRef, PyInt, PyList, PyListRef, PyStr, PyStrRef, PyTupleRef, }, - common::hash::PyHash, + common::{ascii, hash::PyHash}, function::{ArgCallable, OptionalArg, PosArgs}, protocol::PyBuffer, slots::{Comparable, Hashable}, @@ -268,9 +268,7 @@ mod _sre { .unwrap_or_else(|| vm.ctx.none()) } else { m.groups( - OptionalArg::Present( - vm.ctx.new_ascii_literal(crate::utils::ascii!("")), - ), + OptionalArg::Present(vm.ctx.new_ascii_literal(ascii!(""))), vm, )? .into_object() @@ -508,7 +506,7 @@ mod _sre { let join_type = if zelf.isbytes { vm.ctx.new_bytes(vec![]) } else { - vm.ctx.new_ascii_literal(crate::utils::ascii!("")) + vm.ctx.new_ascii_literal(ascii!("")) }; let ret = vm.call_method(&join_type, "join", (list,))?; diff --git a/vm/src/stdlib/ssl.rs b/vm/src/stdlib/ssl.rs index 3da947ef4e..2220713b86 100644 --- a/vm/src/stdlib/ssl.rs +++ b/vm/src/stdlib/ssl.rs @@ -1,5 +1,8 @@ use super::socket::{self, PySocket}; -use crate::common::lock::{PyRwLock, PyRwLockWriteGuard}; +use crate::common::{ + ascii, + lock::{PyRwLock, PyRwLockWriteGuard}, +}; use crate::{ builtins::{PyStrRef, PyType, PyTypeRef, PyWeak}, byteslike::{ArgBytesLike, ArgMemoryBuffer, ArgStrOrBytesLike}, @@ -153,12 +156,8 @@ fn _ssl_enum_certificates(store_name: PyStrRef, vm: &VirtualMachine) -> PyResult (*ptr).dwCertEncodingType }; let enc_type = match enc_type { - wincrypt::X509_ASN_ENCODING => { - vm.ctx.new_ascii_literal(crate::utils::ascii!("x509_asn")) - } - wincrypt::PKCS_7_ASN_ENCODING => { - vm.ctx.new_ascii_literal(crate::utils::ascii!("pkcs_7_asn")) - } + wincrypt::X509_ASN_ENCODING => vm.ctx.new_ascii_literal(ascii!("x509_asn")), + wincrypt::PKCS_7_ASN_ENCODING => vm.ctx.new_ascii_literal(ascii!("pkcs_7_asn")), other => vm.ctx.new_int(other), }; let usage = match c.valid_uses()? { @@ -1051,17 +1050,17 @@ fn cert_to_py(vm: &VirtualMachine, cert: &X509Ref, binary: bool) -> PyResult { .filter_map(|gen_name| { if let Some(email) = gen_name.email() { Some(vm.ctx.new_tuple(vec![ - vm.ctx.new_ascii_literal(crate::utils::ascii!("email")), + vm.ctx.new_ascii_literal(ascii!("email")), vm.ctx.new_utf8_str(email), ])) } else if let Some(dnsname) = gen_name.dnsname() { Some(vm.ctx.new_tuple(vec![ - vm.ctx.new_ascii_literal(crate::utils::ascii!("DNS")), + vm.ctx.new_ascii_literal(ascii!("DNS")), vm.ctx.new_utf8_str(dnsname), ])) } else if let Some(ip) = gen_name.ipaddress() { Some(vm.ctx.new_tuple(vec![ - vm.ctx.new_ascii_literal(crate::utils::ascii!("IP Address")), + vm.ctx.new_ascii_literal(ascii!("IP Address")), vm.ctx.new_utf8_str(String::from_utf8_lossy(ip).into_owned()), ])) } else { diff --git a/vm/src/stdlib/string.rs b/vm/src/stdlib/string.rs index 635cef545e..23d969cc2d 100644 --- a/vm/src/stdlib/string.rs +++ b/vm/src/stdlib/string.rs @@ -5,6 +5,7 @@ pub(crate) use _string::make_module; #[pymodule] mod _string { + use crate::common::ascii; use crate::{ builtins::{PyList, PyStrRef}, exceptions::IntoPyException, @@ -74,7 +75,7 @@ mod _string { let field_name = FieldName::parse(text.as_str()).map_err(|e| e.into_pyexception(vm))?; let first = match field_name.field_type { - FieldType::Auto => vm.ctx.new_ascii_literal(crate::utils::ascii!("")), + FieldType::Auto => vm.ctx.new_ascii_literal(ascii!("")), FieldType::Index(index) => index.into_pyobject(vm), FieldType::Keyword(attribute) => attribute.into_pyobject(vm), }; diff --git a/vm/src/sysmodule.rs b/vm/src/sysmodule.rs index 825d80fad5..b7a8b9226e 100644 --- a/vm/src/sysmodule.rs +++ b/vm/src/sysmodule.rs @@ -2,7 +2,10 @@ use num_traits::ToPrimitive; use std::{env, mem, path}; use crate::builtins::{PyStr, PyStrRef, PyTypeRef}; -use crate::common::hash::{PyHash, PyUHash}; +use crate::common::{ + ascii, + hash::{PyHash, PyUHash}, +}; use crate::frame::FrameRef; use crate::function::{FuncArgs, OptionalArg, PosArgs}; use crate::vm::{PySettings, VirtualMachine}; @@ -44,7 +47,7 @@ fn executable(ctx: &PyContext) -> PyObjectRef { if let Some(exec_path) = env::args().next() { let path = path::Path::new(&exec_path); if !path.exists() { - return ctx.new_ascii_literal(crate::utils::ascii!("")); + return ctx.new_ascii_literal(ascii!("")); } if path.is_absolute() { return ctx.new_utf8_str(exec_path); @@ -237,7 +240,7 @@ fn sys_exc_info(vm: &VirtualMachine) -> (PyObjectRef, PyObjectRef, PyObjectRef) fn sys_git_info(vm: &VirtualMachine) -> PyObjectRef { vm.ctx.new_tuple(vec![ - vm.ctx.new_ascii_literal(crate::utils::ascii!("RustPython")), + vm.ctx.new_ascii_literal(ascii!("RustPython")), vm.ctx.new_utf8_str(version::get_git_identifier()), vm.ctx.new_utf8_str(version::get_git_revision()), ]) @@ -515,8 +518,8 @@ pub(crate) fn make_module(vm: &VirtualMachine, module: PyObjectRef, builtins: Py // TODO Add crate version to this namespace let implementation = py_namespace!(vm, { - "name" => ctx.new_ascii_literal(crate::utils::ascii!("rustpython")), - "cache_tag" => ctx.new_ascii_literal(crate::utils::ascii!("rustpython-01")), + "name" => ctx.new_ascii_literal(ascii!("rustpython")), + "cache_tag" => ctx.new_ascii_literal(ascii!("rustpython-01")), "_multiarch" => ctx.new_utf8_str(MULTIARCH.to_owned()), "version" => version_info.clone(), "hexversion" => ctx.new_int(version::VERSION_HEX), @@ -652,7 +655,7 @@ settrace() -- set the global debug tracing function let base_exec_prefix = option_env!("RUSTPYTHON_BASEEXECPREFIX").unwrap_or(exec_prefix); extend_module!(vm, module, { - "__name__" => ctx.new_ascii_literal(crate::utils::ascii!("sys")), + "__name__" => ctx.new_ascii_literal(ascii!("sys")), "argv" => argv(vm), "builtin_module_names" => builtin_module_names, "byteorder" => ctx.new_utf8_str(bytorder), @@ -674,8 +677,8 @@ settrace() -- set the global debug tracing function "maxunicode" => ctx.new_int(MAXUNICODE), "maxsize" => ctx.new_int(MAXSIZE), "path" => path, - "ps1" => ctx.new_ascii_literal(crate::utils::ascii!(">>>>> ")), - "ps2" => ctx.new_ascii_literal(crate::utils::ascii!("..... ")), + "ps1" => ctx.new_ascii_literal(ascii!(">>>>> ")), + "ps2" => ctx.new_ascii_literal(ascii!("..... ")), "__doc__" => ctx.new_utf8_str(sys_doc), "_getframe" => named_function!(ctx, sys, _getframe), "modules" => modules.clone(), @@ -708,7 +711,7 @@ settrace() -- set the global debug tracing function "api_version" => ctx.new_int(0x0), // what C api? "float_info" => float_info, "int_info" => int_info, - "float_repr_style" => ctx.new_ascii_literal(crate::utils::ascii!("short")), + "float_repr_style" => ctx.new_ascii_literal(ascii!("short")), "_xoptions" => xopts, "warnoptions" => warnopts, "_rustpython_debugbuild" => ctx.new_bool(cfg!(debug_assertions)), diff --git a/vm/src/utils.rs b/vm/src/utils.rs index 953eb8932c..a0415d7ba7 100644 --- a/vm/src/utils.rs +++ b/vm/src/utils.rs @@ -6,8 +6,6 @@ use crate::{ }; use num_traits::ToPrimitive; -pub use crate::macros::ascii; - pub enum Either { A(A), B(B), @@ -128,15 +126,3 @@ impl ToCString for PyStr { std::ffi::CString::new(self.as_ref()).map_err(|err| err.into_pyexception(vm)) } } - -pub const fn bytes_is_ascii(x: &str) -> bool { - let x = x.as_bytes(); - let mut i = 0; - while i < x.len() { - if !x[i].is_ascii() { - return false; - } - i += 1; - } - true -} diff --git a/vm/src/vm.rs b/vm/src/vm.rs index c1700606ec..576bf8ad60 100644 --- a/vm/src/vm.rs +++ b/vm/src/vm.rs @@ -16,7 +16,7 @@ use crate::{ }, bytecode, codecs::CodecsRegistry, - common::{hash::HashSecret, lock::PyMutex, rc::PyRc}, + common::{ascii, hash::HashSecret, lock::PyMutex, rc::PyRc}, exceptions::{self, PyBaseException, PyBaseExceptionRef}, frame::{ExecutionResult, Frame, FrameRef}, frozen, @@ -305,13 +305,13 @@ impl VirtualMachine { module::init_module_dict( &vm, &builtins_dict, - vm.ctx.new_ascii_literal(crate::utils::ascii!("builtins")), + vm.ctx.new_ascii_literal(ascii!("builtins")), vm.ctx.none(), ); module::init_module_dict( &vm, &sysmod_dict, - vm.ctx.new_ascii_literal(crate::utils::ascii!("sys")), + vm.ctx.new_ascii_literal(ascii!("sys")), vm.ctx.none(), ); vm @@ -2227,7 +2227,7 @@ mod tests { #[test] fn test_multiply_str() { Interpreter::default().enter(|vm| { - let a = vm.ctx.new_ascii_literal(crate::utils::ascii!("Hello ")); + let a = vm.ctx.new_ascii_literal(crate::common::ascii!("Hello ")); let b = vm.ctx.new_int(4_i32); let res = vm._mul(&a, &b).unwrap(); let value = res.payload::().unwrap();