October 19, 2022

Hello,

I started playing with D and the hunt-framework. But I bumped into an error using Validation.

module app.forms.LoginForm;
import hunt.validation;
import hunt.framework.http.Form;

class LoginForm : Form {
    mixin MakeForm;
    @Email
    string name;
    @Length(3,8)
    string password;
}

The error looks like that:

../hunt/validation/DeclDef.d-mixin-41(54,108): Error: undefined identifier arg

When I remove the parameters from @Length, it compiles.

I tried the dicoth example application, but I get the same error for the validation used there.

I use this compiler: DMD64 D Compiler v2.100.2
under Linux.

My current D knowledge is not sufficient to fix the bug. No idea how the annotation and mixin templates work together here. I didn't find any documentation, how to write custom annotations.

Can somebody give me a hint?

BR Roman

October 20, 2022

On 10/19/22 3:00 PM, Roman Funk wrote:

>

Hello,

I started playing with D and the hunt-framework. But I bumped into an error using Validation.

module app.forms.LoginForm;
import hunt.validation;
import hunt.framework.http.Form;

class LoginForm : Form {
     mixin MakeForm;
     @Email
     string name;
     @Length(3,8)
     string password;
}

The error looks like that:

../hunt/validation/DeclDef.d-mixin-41(54,108): Error: undefined identifier arg

When I remove the parameters from @Length, it compiles.

I tried the dicoth example application, but I get the same error for the validation used there.

I use this compiler: DMD64 D Compiler v2.100.2
under Linux.

My current D knowledge is not sufficient to fix the bug. No idea how the annotation and mixin templates work together here. I didn't find any documentation, how to write custom annotations.

Can somebody give me a hint?

Just a thought, this may be nothing as I've never used the hunt framework, but try putting the mixin at the end of the class. Sometimes mixins can introspect the type they are being mixed into, which means the compiler has to build the rest of the type first. Although D should be able to forward reference all of this, at some point you have to have some kind of ordering in order to properly introspect a partly built type.

-Steve