Using core for classes

This commit is contained in:
2026-07-09 10:53:07 +02:00
parent c5354ff424
commit b68e4245d4
+8 -8
View File
@@ -45,7 +45,7 @@ impl ClassProcessedData {
.collect::<Vec<Spanned<FunctionDecl>>>();
let mut v_table = Vec::new();
let mut override_v_table = std::collections::HashMap::new();
let mut override_v_table = HashMap::new();
for method in &methods {
if matches!(method.item.visibility, Visibility::Public) {
@@ -178,7 +178,7 @@ impl ClassProcessedData {
cg.indent += 1;
if has_parent {
cg.add_indentedln("let mut table = [std::ptr::null(); Self::__V_COUNT];");
cg.add_indentedln("let mut table = [core::ptr::null(); Self::__V_COUNT];");
cg.add_indentedln(&format!("let parent_table = {}::__V_TABLE;", parent_path));
cg.add_indentedln(
@@ -293,7 +293,7 @@ impl ClassProcessedData {
// Deref tests for override targets
if self.inherits.is_some() && !self.override_v_table.is_empty() {
cg.add_indentedln("let this: &Self = &unsafe { std::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
cg.add_indentedln("let this: &Self = &unsafe { core::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
for (override_tier, v) in &self.override_v_table {
if let Some(path) = &override_tier.0 {
@@ -346,7 +346,7 @@ impl ClassProcessedData {
cg.addln(") -> Self {");
cg.indent += 1;
cg.add_indentedln("let mut this: Self = unsafe { std::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
cg.add_indentedln("let mut this: Self = unsafe { core::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
cg.add_indentedln("this._vptr = &Self::__V_TABLE;");
for field in &self.fields {
@@ -433,7 +433,7 @@ impl ClassProcessedData {
let generics_expr_str = Generics::from(self.generics.clone()).get_rust();
cg.add(&format!(
"impl{} std::ops::Deref for {}{}",
"impl{} core::ops::Deref for {}{}",
generics_str,
self.name.get_rust(),
generics_expr_str
@@ -452,7 +452,7 @@ impl ClassProcessedData {
cg.addln("}");
cg.add(&format!(
"impl{} std::ops::DerefMut for {}{}",
"impl{} core::ops::DerefMut for {}{}",
generics_str,
self.name.get_rust(),
generics_expr_str
@@ -580,7 +580,7 @@ pub fn gen_method_point(method: &FunctionDecl, ctx: &mut Context, cg: &mut RustC
mutable: mutable_self,
ty: Box::new(TypeExpr::Path(
Path(vec![
Identifier(String::from("std")),
Identifier(String::from("core")),
Identifier(String::from("ffi")),
Identifier(String::from("c_void")),
]),
@@ -590,7 +590,7 @@ pub fn gen_method_point(method: &FunctionDecl, ctx: &mut Context, cg: &mut RustC
);
cg.add(&TypeExpr::StaticFn(param_types, method.return_type.clone().map(Box::new)).get_rust());
cg.addln(" = std::mem::transmute(func_ptr);");
cg.addln(" = core::mem::transmute(func_ptr);");
if mutable_self {
cg.add_indented("func(self as *mut Self as *const core::ffi::c_void");