# <<>> with unit(var) fails to compile

Hi!

Any idea ? What’s wrong with unit() ?

``````def serialize(data, s, u \\ 8) do
<<data::little-signed-size(s)-unit(u)>>
end

# mix compile
# (CompileError) lib/[..].ex:L: unit in bitstring expects an integer as argument, got: u
``````

Thanks !

This is a limitation of the BEAM. Nearly every value used in a binary pattern needs to be known statically at compile time.

Some related error-messages do explain that fact, some others don’t. So at least we can say, that the error-message is misleading. And I’m pretty sure, that the value for `size` must be statically known as well.

Could you please check for `size` if the message is misleading as well and report them at the issue tracker? Also make sure, that you are checking against latest released version and if possible against master-branch as well.

`size()` definitely works with a value stated at runtime, it’s just `unit() that doesn’t allow it.

Yup, `size()` works. I will report on github.

Report what? Is it possible to make `unit` a variable in erlang?