This is not possible by design.
type
test* = object
Here, you declare an object that has no fields.
var t = test()
Here, you instantiate this object. `t` has the type `test`.
var t.name = "kek"
The compiler now looks at `t`'s type and sees that this type has no field
`name`, and thus quits with an error at compile time. If you want to allow
that, that means that every construct `t.someFieldName` would not be allowed to
fail at compile time (because that field may be added dynamically). So the
compiler can no longer guarantee that the field you try to access exists.
That's the difference between static and dynamic typing systems.
The question is: Why do you think you need it?