@@ -3117,27 +3117,59 @@ private static void GenerateImplementation(ClassModel iType, ClassModel inClass,
3117
3117
IASContext context = ASContext . Context ;
3118
3118
ContextFeatures features = context . Features ;
3119
3119
bool canGenerate = false ;
3120
+ bool isHaxe = IsHaxe ;
3121
+ FlagType flags = ( FlagType . Function | FlagType . Getter | FlagType . Setter ) ;
3122
+ if ( isHaxe ) flags |= FlagType . Variable ;
3120
3123
3121
3124
iType . ResolveExtends ( ) ; // resolve inheritance chain
3122
3125
while ( ! iType . IsVoid ( ) && iType . QualifiedName != "Object" )
3123
3126
{
3124
3127
foreach ( MemberModel method in iType . Members )
3125
3128
{
3126
- if ( ( method . Flags & ( FlagType . Function | FlagType . Getter | FlagType . Setter ) ) == 0
3129
+ if ( ( method . Flags & flags ) == 0
3127
3130
|| method . Name == iType . Name )
3128
3131
continue ;
3129
3132
3130
3133
// check if method exists
3131
3134
ASComplete . FindMember ( method . Name , inClass , result , method . Flags , 0 ) ;
3132
3135
if ( ! result . IsNull ( ) ) continue ;
3133
3136
3134
- string decl = entry ? NewLine : "" ;
3137
+ string decl ;
3135
3138
if ( ( method . Flags & FlagType . Getter ) > 0 )
3136
- decl = TemplateUtils . ToDeclarationWithModifiersString ( method , TemplateUtils . GetTemplate ( "Getter" ) ) ;
3139
+ {
3140
+ if ( isHaxe )
3141
+ {
3142
+ decl = TemplateUtils . ToDeclarationWithModifiersString ( method , TemplateUtils . GetTemplate ( "Property" ) ) ;
3143
+
3144
+ string getter = null , setter = null ;
3145
+ if ( method . Parameters [ 0 ] . Name == "get" )
3146
+ {
3147
+ getter = NewLine + TemplateUtils . ToDeclarationString ( method , TemplateUtils . GetTemplate ( "Getter" ) ) ;
3148
+ getter = TemplateUtils . ReplaceTemplateVariable ( getter , "Modifiers" , null ) ;
3149
+ getter = TemplateUtils . ReplaceTemplateVariable ( getter , "Member" , method . Name ) ;
3150
+ decl += getter ;
3151
+ }
3152
+
3153
+ if ( method . Parameters [ 1 ] . Name == "set" )
3154
+ {
3155
+ setter = NewLine + TemplateUtils . ToDeclarationString ( method , TemplateUtils . GetTemplate ( "Setter" ) ) ;
3156
+ setter = TemplateUtils . ReplaceTemplateVariable ( setter , "Modifiers" , null ) ;
3157
+ setter = TemplateUtils . ReplaceTemplateVariable ( setter , "Member" , method . Name ) ;
3158
+ decl += setter ;
3159
+ }
3160
+
3161
+ string metadata = ( getter != null && setter != null ) ? "@:isVar" : null ;
3162
+ decl = TemplateUtils . ReplaceTemplateVariable ( decl , "MetaData" , metadata ) ;
3163
+ }
3164
+ else
3165
+ decl = TemplateUtils . ToDeclarationWithModifiersString ( method , TemplateUtils . GetTemplate ( "Getter" ) ) ;
3166
+ }
3137
3167
else if ( ( method . Flags & FlagType . Setter ) > 0 )
3138
3168
decl = TemplateUtils . ToDeclarationWithModifiersString ( method , TemplateUtils . GetTemplate ( "Setter" ) ) ;
3139
- else
3169
+ else if ( ( method . Flags & FlagType . Function ) > 0 )
3140
3170
decl = TemplateUtils . ToDeclarationWithModifiersString ( method , TemplateUtils . GetTemplate ( "Function" ) ) ;
3171
+ else
3172
+ decl = NewLine + TemplateUtils . ToDeclarationWithModifiersString ( method , TemplateUtils . GetTemplate ( "Variable" ) ) ;
3141
3173
decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Member" , "_" + method . Name ) ;
3142
3174
decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Void" , features . voidKey ) ;
3143
3175
decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Body" , null ) ;
@@ -3518,13 +3550,7 @@ static private string AddRemoveEvent(string eventName)
3518
3550
3519
3551
private static void GenerateGetter ( string name , MemberModel member , int position )
3520
3552
{
3521
- string acc ;
3522
- if ( IsHaxe )
3523
- {
3524
- acc = GetStaticKeyword ( member ) ;
3525
- if ( ! string . IsNullOrEmpty ( acc ) ) acc += " " ;
3526
- }
3527
- else acc = GetPublicAccessor ( member ) ;
3553
+ string acc = IsHaxe ? GetStaticKeyword ( member ) : GetPublicAccessor ( member ) ;
3528
3554
string template = TemplateUtils . GetTemplate ( "Getter" ) ;
3529
3555
string decl = NewLine + TemplateUtils . ReplaceTemplateVariable ( template , "Modifiers" , acc ) ;
3530
3556
decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Name" , name ) ;
@@ -3536,12 +3562,7 @@ private static void GenerateGetter(string name, MemberModel member, int position
3536
3562
3537
3563
private static void GenerateSetter ( string name , MemberModel member , int position )
3538
3564
{
3539
- string acc ;
3540
- if ( IsHaxe )
3541
- {
3542
- acc = GetStaticKeyword ( member ) ;
3543
- if ( ! string . IsNullOrEmpty ( acc ) ) acc += " " ;
3544
- } else acc = GetPublicAccessor ( member ) ;
3565
+ string acc = IsHaxe ? GetStaticKeyword ( member ) : GetPublicAccessor ( member ) ;
3545
3566
string template = TemplateUtils . GetTemplate ( "Setter" ) ;
3546
3567
string decl = NewLine + TemplateUtils . ReplaceTemplateVariable ( template , "Modifiers" , acc ) ;
3547
3568
decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Name" , name ) ;
@@ -3562,13 +3583,7 @@ private static void GenerateGetterSetter(string name, MemberModel member, int po
3562
3583
GenerateGetter ( name , member , position ) ;
3563
3584
return ;
3564
3585
}
3565
- string acc ;
3566
- if ( IsHaxe )
3567
- {
3568
- acc = GetStaticKeyword ( member ) ;
3569
- if ( ! string . IsNullOrEmpty ( acc ) ) acc += " " ;
3570
- }
3571
- else acc = GetPublicAccessor ( member ) ;
3586
+ string acc = IsHaxe ? GetStaticKeyword ( member ) : GetPublicAccessor ( member ) ;
3572
3587
string decl = NewLine + TemplateUtils . ReplaceTemplateVariable ( template , "Modifiers" , acc ) ;
3573
3588
decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Name" , name ) ;
3574
3589
decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Type" , FormatType ( member . Type ) ) ;
0 commit comments