msoucy / dproto

D Protocol Buffer mixins to create structures at compile time
Boost Software License 1.0
37 stars 16 forks source link

Error with uint32: cannot modify const expression src #54

Closed xandr84 closed 9 years ago

xandr84 commented 9 years ago

This code causes complilation errors on DMD 2.067.1 (tested only on this version)

mixin ProtocolBufferFromString!"   message Person {   required uint32 id = 1;  }  ";
\dproto-1.3.0\import\dproto\serialize.d(242): Error: cannot modify const expression src
\dproto-1.3.0\import\dproto\serialize.d(433): Error: template instance dproto.serialize.toVarint!(Appender!(ubyte[]), const(uint)) error instantiating
\dproto-1.3.0\import\dproto\buffers.d(214):        instantiated from here: writeProto!("uint32", Appender!(ubyte[]))
\dproto-1.3.0\import\dproto\dproto.d-mixin-38(43):        instantiated from here: serializeTo!(Appender!(ubyte[]))
\dproto-1.3.0\import\dproto\dproto.d-mixin-38(41):        instantiated from here: serializeTo!(Appender!(ubyte[]))
\dproto-1.3.0\import\dproto\dproto.d-mixin-38(39): Error: template instance dproto.buffers.RequiredBuffer!(1LU, "uint32", uint, false) error instantiating
xandr84 commented 9 years ago

I repaired it temporarily removing 'const' from void writeProto(string T, R)(ref R r, const BuffType!T src)