Skip to content

Commit 6adf14b

Browse files
authored
Merge pull request RustPython#3262 from youknowone/new-return-type
vm.ctx.new_int returns PyInt and so on
2 parents a86769e + 054e13d commit 6adf14b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+535
-502
lines changed

benches/microbenchmarks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ fn bench_rustpy_code(group: &mut BenchmarkGroup<WallTime>, bench: &MicroBenchmar
134134
.locals
135135
.set_item(
136136
vm.ctx.new_ascii_literal(ascii!("ITERATIONS")),
137-
vm.ctx.new_int(idx),
137+
vm.new_pyobj(idx),
138138
vm,
139139
)
140140
.expect("Error adding ITERATIONS local variable");

derive/src/pyclass.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ where
539539

540540
let value = if args.item.is_const() {
541541
// TODO: ctx.new_value
542-
quote_spanned!(ident.span() => ctx.new_int(Self::#ident))
542+
quote_spanned!(ident.span() => ctx.new_int(Self::#ident).into())
543543
} else {
544544
quote_spanned!(ident.span() => Self::#ident(ctx))
545545
};

stdlib/src/binascii.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,13 @@ mod decl {
9494
}
9595

9696
#[pyfunction]
97-
fn crc32(data: ArgBytesLike, value: OptionalArg<u32>, vm: &VirtualMachine) -> PyResult {
97+
fn crc32(data: ArgBytesLike, value: OptionalArg<u32>) -> u32 {
9898
let crc = value.unwrap_or(0);
9999

100100
let mut digest = crc32::Digest::new_with_initial(crc32::IEEE, crc);
101101
data.with_ref(|bytes| digest.write(bytes));
102102

103-
Ok(vm.ctx.new_int(digest.sum32()))
103+
digest.sum32()
104104
}
105105

106106
#[derive(FromArgs)]

stdlib/src/dis.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ mod decl {
3333
fn compiler_flag_names(vm: &VirtualMachine) -> PyDictRef {
3434
let dict = vm.ctx.new_dict();
3535
for (name, flag) in CodeFlags::NAME_MAPPING {
36-
dict.set_item(vm.ctx.new_int(flag.bits()), vm.ctx.new_utf8_str(name), vm)
36+
dict.set_item(vm.new_pyobj(flag.bits()), vm.ctx.new_utf8_str(name), vm)
3737
.unwrap();
3838
}
3939
dict

stdlib/src/fcntl.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ mod fcntl {
5252
if ret < 0 {
5353
return Err(os::errno_err(vm));
5454
}
55-
Ok(vm.ctx.new_int(ret))
55+
Ok(vm.new_pyobj(ret))
5656
}
5757

5858
#[pyfunction]
@@ -85,7 +85,7 @@ mod fcntl {
8585
if ret < 0 {
8686
return Err(os::errno_err(vm));
8787
}
88-
return Ok(vm.ctx.new_int(ret));
88+
return Ok(vm.ctx.new_int(ret).into());
8989
}
9090
// treat like an immutable buffer
9191
fill_buf(&arg_buf)?
@@ -103,7 +103,7 @@ mod fcntl {
103103
if ret < 0 {
104104
return Err(os::errno_err(vm));
105105
}
106-
Ok(vm.ctx.new_int(ret))
106+
Ok(vm.ctx.new_int(ret).into())
107107
}
108108
}
109109
}

stdlib/src/hashlib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ mod hashlib {
5757
}
5858

5959
#[pyproperty]
60-
fn digest_size(&self, vm: &VirtualMachine) -> PyResult {
61-
Ok(vm.ctx.new_int(self.read().digest_size()))
60+
fn digest_size(&self) -> usize {
61+
self.read().digest_size()
6262
}
6363

6464
#[pymethod]

stdlib/src/json.rs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ mod _json {
7575
) -> PyResult<PyIterReturn> {
7676
let c = match s.chars().next() {
7777
Some(c) => c,
78-
None => return Ok(PyIterReturn::StopIteration(Some(vm.ctx.new_int(idx)))),
78+
None => {
79+
return Ok(PyIterReturn::StopIteration(Some(
80+
vm.ctx.new_int(idx).into(),
81+
)))
82+
}
7983
};
8084
let next_idx = idx + c.len_utf8();
8185
match c {
@@ -115,29 +119,30 @@ mod _json {
115119
($s:literal, $val:expr) => {
116120
if s.starts_with($s) {
117121
return Ok(PyIterReturn::Return(
118-
vm.ctx.new_tuple(vec![$val, vm.ctx.new_int(idx + $s.len())]),
122+
vm.new_tuple(($val, idx + $s.len())).into(),
119123
));
120124
}
121125
};
122126
}
123127

124128
parse_const!("null", vm.ctx.none());
125-
parse_const!("true", vm.ctx.new_bool(true));
126-
parse_const!("false", vm.ctx.new_bool(false));
129+
parse_const!("true", true);
130+
parse_const!("false", false);
127131

128132
if let Some((res, len)) = self.parse_number(s, vm) {
129-
return Ok(PyIterReturn::Return(
130-
vm.ctx.new_tuple(vec![res?, vm.ctx.new_int(idx + len)]),
131-
));
133+
return Ok(PyIterReturn::Return(vm.new_tuple((res?, idx + len)).into()));
132134
}
133135

134136
macro_rules! parse_constant {
135137
($s:literal) => {
136138
if s.starts_with($s) {
137-
return Ok(PyIterReturn::Return(vm.ctx.new_tuple(vec![
138-
vm.invoke(&self.parse_constant, ($s.to_owned(),))?,
139-
vm.ctx.new_int(idx + $s.len()),
140-
])));
139+
return Ok(PyIterReturn::Return(
140+
vm.new_tuple((
141+
vm.invoke(&self.parse_constant, ($s.to_owned(),))?,
142+
idx + $s.len(),
143+
))
144+
.into(),
145+
));
141146
}
142147
};
143148
}
@@ -146,7 +151,9 @@ mod _json {
146151
parse_constant!("Infinity");
147152
parse_constant!("-Infinity");
148153

149-
Ok(PyIterReturn::StopIteration(Some(vm.ctx.new_int(idx))))
154+
Ok(PyIterReturn::StopIteration(Some(
155+
vm.ctx.new_int(idx).into(),
156+
)))
150157
}
151158

152159
fn parse_number(&self, s: &str, vm: &VirtualMachine) -> Option<(PyResult, usize)> {
@@ -175,12 +182,12 @@ mod _json {
175182
if let Some(ref parse_float) = self.parse_float {
176183
vm.invoke(parse_float, (buf.to_owned(),))
177184
} else {
178-
Ok(vm.ctx.new_float(f64::from_str(buf).unwrap()))
185+
Ok(vm.ctx.new_float(f64::from_str(buf).unwrap()).into())
179186
}
180187
} else if let Some(ref parse_int) = self.parse_int {
181188
vm.invoke(parse_int, (buf.to_owned(),))
182189
} else {
183-
Ok(vm.ctx.new_int(BigInt::from_str(buf).unwrap()))
190+
Ok(vm.new_pyobj(BigInt::from_str(buf).unwrap()))
184191
};
185192
Some((ret, buf.len()))
186193
}
@@ -197,7 +204,9 @@ mod _json {
197204
let idx = idx as usize;
198205
let mut chars = pystr.as_str().chars();
199206
if idx > 0 && chars.nth(idx - 1).is_none() {
200-
return Ok(PyIterReturn::StopIteration(Some(vm.ctx.new_int(idx))));
207+
return Ok(PyIterReturn::StopIteration(Some(
208+
vm.ctx.new_int(idx).into(),
209+
)));
201210
}
202211
zelf.parse(chars.as_str(), pystr.clone(), idx, zelf.clone().into(), vm)
203212
}

stdlib/src/math.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ mod math {
430430
if result_or_err.is_err() {
431431
if let Ok(Some(v)) = x.try_to_f64(vm) {
432432
let v = try_f64_to_bigint(v.ceil(), vm)?;
433-
return Ok(vm.ctx.new_int(v));
433+
return Ok(vm.ctx.new_int(v).into());
434434
}
435435
}
436436
result_or_err
@@ -442,7 +442,7 @@ mod math {
442442
if result_or_err.is_err() {
443443
if let Ok(Some(v)) = x.try_to_f64(vm) {
444444
let v = try_f64_to_bigint(v.floor(), vm)?;
445-
return Ok(vm.ctx.new_int(v));
445+
return Ok(vm.ctx.new_int(v).into());
446446
}
447447
}
448448
result_or_err

stdlib/src/pyexpat.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ mod _pyexpat {
7171
end_element: MutableObject::new(vm.ctx.none()),
7272
character_data: MutableObject::new(vm.ctx.none()),
7373
entity_decl: MutableObject::new(vm.ctx.none()),
74-
buffer_text: MutableObject::new(vm.ctx.new_bool(false)),
74+
buffer_text: MutableObject::new(vm.ctx.new_bool(false).into()),
7575
}
7676
.into_ref(vm))
7777
}

stdlib/src/re.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ mod re {
207207
vm.ctx.new_utf8_str(s)
208208
})
209209
.collect();
210-
vm.ctx.new_tuple(out)
210+
vm.ctx.new_tuple(out).into()
211211
}
212212
})
213213
.collect();
@@ -368,19 +368,19 @@ mod re {
368368
impl PyMatch {
369369
#[pymethod]
370370
fn start(&self, group: OptionalArg, vm: &VirtualMachine) -> PyResult {
371-
let group = group.unwrap_or_else(|| vm.ctx.new_int(0));
371+
let group = group.unwrap_or_else(|| vm.ctx.new_int(0).into());
372372
let start = self
373373
.get_bounds(group, vm)?
374-
.map_or_else(|| vm.ctx.new_int(-1), |r| vm.ctx.new_int(r.start));
374+
.map_or_else(|| vm.ctx.new_int(-1).into(), |r| vm.ctx.new_int(r.start).into());
375375
Ok(start)
376376
}
377377

378378
#[pymethod]
379379
fn end(&self, group: OptionalArg, vm: &VirtualMachine) -> PyResult {
380-
let group = group.unwrap_or_else(|| vm.ctx.new_int(0));
380+
let group = group.unwrap_or_else(|| vm.ctx.new_int(0).into());
381381
let end = self
382382
.get_bounds(group, vm)?
383-
.map_or_else(|| vm.ctx.new_int(-1), |r| vm.ctx.new_int(r.end));
383+
.map_or_else(|| vm.ctx.new_int(-1).into(), |r| vm.ctx.new_int(r.end).into());
384384
Ok(end)
385385
}
386386

@@ -427,13 +427,13 @@ mod re {
427427
.into_iter()
428428
.map(|id| self.get_group(id, vm).map(|g| g.into_pyobject(vm)))
429429
.collect();
430-
Ok(vm.ctx.new_tuple(output?))
430+
Ok(vm.ctx.new_tuple(output?)).into()
431431
}
432432
}
433433
}
434434

435435
#[pymethod]
436-
fn groups(&self, default: OptionalArg, vm: &VirtualMachine) -> PyObjectRef {
436+
fn groups(&self, default: OptionalArg, vm: &VirtualMachine) -> PyTupleRef {
437437
let default = default.into_option();
438438
let groups = self
439439
.captures

stdlib/src/scproxy.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ mod _scproxy {
4747
.and_then(|v| v.downcast::<CFNumber>())
4848
.and_then(|v| v.to_i32())
4949
.unwrap_or(0);
50-
result.set_item("exclude_simple", vm.ctx.new_bool(v), vm)?;
50+
result.set_item("exclude_simple", vm.ctx.new_bool(v).into(), vm)?;
5151

5252
if let Some(an_array) = proxy_dict
5353
.find(unsafe { kSCPropNetProxiesExceptionsList })
@@ -65,7 +65,7 @@ mod _scproxy {
6565
.into_pyobject(vm)
6666
})
6767
.collect();
68-
result.set_item("exceptions", vm.ctx.new_tuple(v), vm)?;
68+
result.set_item("exceptions", vm.ctx.new_tuple(v).into(), vm)?;
6969
}
7070

7171
Ok(Some(result))

stdlib/src/select.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ mod decl {
332332
let removed = remove_fd(&mut self.fds.lock(), fd);
333333
removed
334334
.map(drop)
335-
.ok_or_else(|| vm.new_key_error(vm.ctx.new_int(fd)))
335+
.ok_or_else(|| vm.new_key_error(vm.ctx.new_int(fd).into()))
336336
}
337337

338338
#[pymethod]

stdlib/src/socket.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ impl PySocket {
841841
if ret < 0 {
842842
Err(crate::vm::stdlib::os::errno_err(vm))
843843
} else {
844-
Ok(vm.ctx.new_int(flag))
844+
Ok(vm.ctx.new_int(flag).into())
845845
}
846846
} else {
847847
if buflen <= 0 || buflen > 1024 {
@@ -1072,7 +1072,7 @@ fn _socket_getservbyname(
10721072
servicename: PyStrRef,
10731073
protocolname: OptionalArg<PyStrRef>,
10741074
vm: &VirtualMachine,
1075-
) -> PyResult {
1075+
) -> PyResult<u16> {
10761076
let cstr_name = servicename.to_cstring(vm)?;
10771077
let cstr_proto = protocolname
10781078
.as_ref()
@@ -1084,7 +1084,7 @@ fn _socket_getservbyname(
10841084
return Err(vm.new_os_error("service/proto not found".to_owned()));
10851085
}
10861086
let port = unsafe { (*serv).s_port };
1087-
Ok(vm.ctx.new_int(u16::from_be(port as u16)))
1087+
Ok(u16::from_be(port as u16))
10881088
}
10891089

10901090
fn _socket_getservbyport(
@@ -1266,13 +1266,14 @@ fn _socket_getaddrinfo(opts: GAIOptions, vm: &VirtualMachine) -> PyResult {
12661266
let list = addrs
12671267
.map(|ai| {
12681268
ai.map(|ai| {
1269-
vm.ctx.new_tuple(vec![
1270-
vm.ctx.new_int(ai.address),
1271-
vm.ctx.new_int(ai.socktype),
1272-
vm.ctx.new_int(ai.protocol),
1273-
ai.canonname.into_pyobject(vm),
1269+
vm.new_tuple((
1270+
ai.address,
1271+
ai.socktype,
1272+
ai.protocol,
1273+
ai.canonname,
12741274
get_ip_addr_tuple(&ai.sockaddr, vm),
1275-
])
1275+
))
1276+
.into()
12761277
})
12771278
})
12781279
.collect::<io::Result<Vec<_>>>()
@@ -1353,7 +1354,7 @@ fn _socket_getprotobyname(name: PyStrRef, vm: &VirtualMachine) -> PyResult {
13531354
return Err(vm.new_os_error("protocol not found".to_owned()));
13541355
}
13551356
let num = unsafe { (*proto).p_proto };
1356-
Ok(vm.ctx.new_int(num))
1357+
Ok(vm.ctx.new_int(num).into())
13571358
}
13581359

13591360
fn _socket_getnameinfo(
@@ -1727,7 +1728,7 @@ fn convert_socket_error(
17271728
};
17281729
vm.new_exception(
17291730
exception_cls.get().unwrap().clone(),
1730-
vec![vm.ctx.new_int(err.error_num()), vm.ctx.new_utf8_str(strerr)],
1731+
vec![vm.new_pyobj(err.error_num()), vm.ctx.new_utf8_str(strerr)],
17311732
)
17321733
}
17331734

0 commit comments

Comments
 (0)