Skip to content

Commit 8b48833

Browse files
committed
chore: Compile on stable rust on CI again
The ICE has been fixed so we can restore stable compilation again. rust-lang/rust#112832
1 parent 6431991 commit 8b48833

File tree

2 files changed

+84
-78
lines changed

2 files changed

+84
-78
lines changed

.github/workflows/rust.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: ubuntu-latest
1111
strategy:
1212
matrix:
13-
rust: [nightly] # This should be reverted back to [stable, nightly] when 1.74 is made the rustc stable version
13+
rust: [stable, nightly]
1414
env:
1515
CRATE_NAME: gluon
1616
CARGO_INCREMENTAL: 0 # Incremental compilation is slower and bloats the cache

tests/api.rs

+83-77
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use gluon::{
1616
query::Compilation,
1717
vm::{
1818
api::{
19-
de::De,
2019
scoped::{Ref, RefMut},
2120
FunctionRef, FutureResult, Hole, OpaqueValue, OwnedFunction, RuntimeResult, VmType, IO,
2221
},
@@ -298,47 +297,6 @@ fn tuples_start_at_0() {
298297
);
299298
}
300299

301-
#[test]
302-
fn use_type_from_type_field() {
303-
let _ = ::env_logger::try_init();
304-
let vm = make_vm();
305-
306-
#[derive(Serialize, Deserialize, PartialEq, Debug)]
307-
enum Test {
308-
A(i32),
309-
B(String),
310-
C,
311-
}
312-
impl VmType for Test {
313-
type Type = Self;
314-
fn make_type(vm: &Thread) -> ArcType {
315-
if let Some(typ) = vm.get_type::<Self>() {
316-
return typ;
317-
}
318-
319-
let (name, typ) = gluon::vm::api::typ::from_rust::<Self>(vm).unwrap();
320-
vm.register_type_as(
321-
name.clone(),
322-
Alias::new(name, Vec::new(), typ),
323-
::std::any::TypeId::of::<Self>(),
324-
)
325-
.unwrap()
326-
}
327-
}
328-
329-
add_extern_module(&vm, "test_types", |vm| {
330-
ExternModule::new(vm, record! { type Test => Test })
331-
});
332-
let text = r#"
333-
let { Test } = import! test_types
334-
B "abc"
335-
"#;
336-
let (De(actual), _) = vm
337-
.run_expr::<De<Test>>("test", text)
338-
.unwrap_or_else(|err| panic!("{}", err));
339-
assert_eq!(actual, Test::B("abc".to_string()));
340-
}
341-
342300
#[test]
343301
fn use_rust_created_tuple_as_polymorphic() {
344302
let _ = ::env_logger::try_init();
@@ -368,41 +326,6 @@ fn use_rust_created_record_as_polymorphic() {
368326
assert_eq!(result, 1);
369327
}
370328

371-
#[test]
372-
fn return_btreemap() {
373-
let _ = ::env_logger::try_init();
374-
375-
let vm = make_vm();
376-
377-
add_extern_module_with_deps(
378-
&vm,
379-
"test",
380-
|vm| {
381-
ExternModule::new(
382-
vm,
383-
primitive!(1, "test", |()| {
384-
vec![("a".to_string(), 1), ("b".to_string(), 2)]
385-
.into_iter()
386-
.collect::<BTreeMap<_, _>>()
387-
}),
388-
)
389-
},
390-
vec!["std.map".into(), "std.json.de".into()],
391-
);
392-
393-
vm.run_expr::<()>("", "let _ = import! test in ()")
394-
.unwrap_or_else(|err| panic!("{}", err));
395-
let (result, _) = vm
396-
.run_expr::<BTreeMap<_, _>>("", "(import! test) ()")
397-
.unwrap_or_else(|err| panic!("{}", err));
398-
assert_eq!(
399-
result,
400-
vec![("a".to_string(), 1), ("b".to_string(), 2)]
401-
.into_iter()
402-
.collect::<BTreeMap<_, _>>()
403-
);
404-
}
405-
406329
#[test]
407330
fn get_value_boxed_or_unboxed() {
408331
let _ = ::env_logger::try_init();
@@ -777,3 +700,86 @@ fn clone_userdata() {
777700

778701
assert_eq!(*result, Test(123));
779702
}
703+
704+
#[cfg(feature = "serialization")]
705+
mod serialization {
706+
use super::*;
707+
708+
use gluon::vm::api::de::De;
709+
710+
#[test]
711+
fn use_type_from_type_field() {
712+
let _ = ::env_logger::try_init();
713+
let vm = make_vm();
714+
715+
#[derive(Serialize, Deserialize, PartialEq, Debug)]
716+
enum Test {
717+
A(i32),
718+
B(String),
719+
C,
720+
}
721+
impl VmType for Test {
722+
type Type = Self;
723+
fn make_type(vm: &Thread) -> ArcType {
724+
if let Some(typ) = vm.get_type::<Self>() {
725+
return typ;
726+
}
727+
728+
let (name, typ) = gluon::vm::api::typ::from_rust::<Self>(vm).unwrap();
729+
vm.register_type_as(
730+
name.clone(),
731+
Alias::new(name, Vec::new(), typ),
732+
::std::any::TypeId::of::<Self>(),
733+
)
734+
.unwrap()
735+
}
736+
}
737+
738+
add_extern_module(&vm, "test_types", |vm| {
739+
ExternModule::new(vm, record! { type Test => Test })
740+
});
741+
let text = r#"
742+
let { Test } = import! test_types
743+
B "abc"
744+
"#;
745+
let (De(actual), _) = vm
746+
.run_expr::<De<Test>>("test", text)
747+
.unwrap_or_else(|err| panic!("{}", err));
748+
assert_eq!(actual, Test::B("abc".to_string()));
749+
}
750+
751+
#[test]
752+
fn return_btreemap() {
753+
let _ = ::env_logger::try_init();
754+
755+
let vm = make_vm();
756+
757+
add_extern_module_with_deps(
758+
&vm,
759+
"test",
760+
|vm| {
761+
ExternModule::new(
762+
vm,
763+
primitive!(1, "test", |()| {
764+
vec![("a".to_string(), 1), ("b".to_string(), 2)]
765+
.into_iter()
766+
.collect::<BTreeMap<_, _>>()
767+
}),
768+
)
769+
},
770+
vec!["std.map".into(), "std.json.de".into()],
771+
);
772+
773+
vm.run_expr::<()>("", "let _ = import! test in ()")
774+
.unwrap_or_else(|err| panic!("{}", err));
775+
let (result, _) = vm
776+
.run_expr::<BTreeMap<_, _>>("", "(import! test) ()")
777+
.unwrap_or_else(|err| panic!("{}", err));
778+
assert_eq!(
779+
result,
780+
vec![("a".to_string(), 1), ("b".to_string(), 2)]
781+
.into_iter()
782+
.collect::<BTreeMap<_, _>>()
783+
);
784+
}
785+
}

0 commit comments

Comments
 (0)