Self initialization doesn't work

Abierto
#248 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
1-2 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust
Área
compilers

Línea de trabajo

Start by tracing how the transpiler handles a variable initialized with its own address, using the C and generated Rust snippets in the issue as the reproducer. Identify the translation entry point and relevant tests, then check whether the generated Rust compiles; done means this self-initialization case builds successfully.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug
struct list_head {
    struct list_head *next;
};

void f() {
        struct list_head list = { &list };
}

compiles to:

#[derive(Default)]
pub struct list_head {
    pub next: Value<Ptr<list_head>>,
}


pub fn f_0() {
    let list: Value<list_head> = Rc::new(RefCell::new(list_head {
        next: Rc::new(RefCell::new((list.as_pointer()))),
    }));
}

which fails to build with:

error[E0425]: cannot find value `list` in this scope
  --> src/main.rs:35:37
   |
35 |         next: Rc::new(RefCell::new((list.as_pointer()))),
   |                                     ^^^^ not found in this scope
Lenguaje dominante
Rust
Estrellas
310
Forks
18
Merge medio
10 h 18 min
PR fusionados (30 d)
125

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Cpp2Rust/cpp2rust

Todos los issues de Cpp2Rust/cpp2rust

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.