¿Estructuras anidadas que son parte de un mapeo roto en Solidity 0.5.0?

El siguiente código se compiló correctamente con Soldity 0.4.21 . Con 0.5.0 desencadena un error de compilación fatal de la siguiente manera:

UnimplementedFeatureError: Encoding type "struct TestNestedStructInMapping.structNested memory" not yet implemented.
Compilation failed. See above.
Truffle v5.0.0-beta.2 (core: 5.0.0-beta.2)
Solidity v0.5.0 (solc-js)
Node v8.11.1

Aquí está el código:

pragma solidity ^0.5.0;

contract TestNestedStructInMapping {

    // The struct that is nested.
    struct structNested {
        uint dummy;
    }

    // The struct that holds the nested struct.
    struct structMain {
        structNested gamePaymentsSummary;
    }

    // The map that maps a game ID to a specific game.
    mapping(uint256 => structMain) public s_mapOfNestedStructs;
}

Aquí hay un enlace a un proyecto de Truffle que puede extraer y probar:

https://github.com/roschler/nested-structs-tests.git

Alguien sabe cómo resolver esto?

Respuestas (1)

Puedes resolverlo quitando la palabra publicdel mapping.

La estructura de almacenamiento en sí es aceptable y se puede esperar que funcione. Sin embargo, el captador "gratuito" para dicha estructura no está implementado en el compilador.

Parece que tiene razón sobre un cambio importante, dado que se compila sin quejas en 0.4.25. Posiblemente, otra alma caritativa intervendrá con una respuesta precisa sobre la limitación y hacia dónde vamos desde aquí. En cualquier caso, espero que pueda continuar con sus propias funciones captadoras explícitas.

Espero eso ayude.