Skip to content

Commit c7d3f9e

Browse files
committed
Refactor AddPropertyDeclaration for type accuracy
Updated AddPropertyDeclaration in CsPlainSourceBuilder to accept an additional parameter `eligibleType` of type `IDeclaration`. Modified the switch statement to process `eligibility.eligibleType` and updated method calls accordingly. This ensures accurate type information is used during source code generation, enhancing the flexibility and precision of the transpilation process.
1 parent 3623a6c commit c7d3f9e

2 files changed

Lines changed: 16 additions & 12 deletions

File tree

src/AXSharp.compiler/src/AXSharp.Cs.Compiler/Plain/CsPlainSourceBuilder.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public void CreateFieldDeclaration(IFieldDeclaration fieldDeclaration, IxNodeVis
119119
if (eligibility.isEligible)
120120
{
121121
AddToSource(fieldDeclaration.Pragmas.AddedPropertiesAsAttributes());
122-
switch (fieldDeclaration.Type)
122+
switch (eligibility.eligibleType)
123123
{
124124
case IArrayTypeDeclaration arrayType:
125125
var arrayEligibility = arrayType.IsEligibleForTranspile(this);
@@ -142,19 +142,19 @@ public void CreateFieldDeclaration(IFieldDeclaration fieldDeclaration, IxNodeVis
142142
}
143143
break;
144144
case IStringTypeDeclaration:
145-
AddPropertyDeclaration(fieldDeclaration, visitor);
145+
AddPropertyDeclaration(fieldDeclaration, fieldDeclaration, visitor);
146146
AddToSource(" = string.Empty;");
147147
break;
148148
case INamedValueTypeDeclaration namedValueType:
149-
AddPropertyDeclaration(fieldDeclaration, visitor);
149+
AddPropertyDeclaration(fieldDeclaration, fieldDeclaration, visitor);
150150
break;
151151
case IScalarTypeDeclaration scalar:
152-
AddPropertyDeclaration(fieldDeclaration, visitor);
152+
AddPropertyDeclaration(fieldDeclaration, fieldDeclaration, visitor);
153153
AddToSource(scalar.CreateScalarInitializer(this.Project?.CompilerOptions?.TargetPlatfromMoniker));
154154
break;
155155
case IReferenceTypeDeclaration d:
156156
case IStructuredTypeDeclaration s:
157-
AddPropertyDeclaration(fieldDeclaration, visitor);
157+
AddPropertyDeclaration(fieldDeclaration, eligibility.eligibleType, visitor);
158158
AddToSource(" = new ");
159159
eligibility.eligibleType.Accept(visitor, this);
160160
//fieldDeclaration.Type.Accept(visitor, this);
@@ -164,7 +164,7 @@ public void CreateFieldDeclaration(IFieldDeclaration fieldDeclaration, IxNodeVis
164164
}
165165
}
166166

167-
private void AddPropertyDeclaration(IDeclaration fieldDeclaration, IxNodeVisitor visitor)
167+
private void AddPropertyDeclaration(IDeclaration fieldDeclaration, IDeclaration eligibleType, IxNodeVisitor visitor)
168168
{
169169
fieldDeclaration.Pragmas.AddAttributes();
170170
switch (fieldDeclaration)
@@ -176,7 +176,7 @@ private void AddPropertyDeclaration(IDeclaration fieldDeclaration, IxNodeVisitor
176176
AddToSource($"public");
177177
break;
178178
}
179-
fieldDeclaration.Type.Accept(visitor, this);
179+
eligibleType.Type.Accept(visitor, this);
180180
AddToSource($" {fieldDeclaration.Name}");
181181
AddToSource("{get; set;}");
182182
}
@@ -309,19 +309,19 @@ public void CreateVariableDeclaration(IVariableDeclaration fieldDeclaration, IxN
309309
}
310310
break;
311311
case IStringTypeDeclaration:
312-
AddPropertyDeclaration(fieldDeclaration, visitor);
312+
AddPropertyDeclaration(fieldDeclaration, fieldDeclaration, visitor);
313313
AddToSource(" = string.Empty;");
314314
break;
315315
case INamedValueTypeDeclaration namedValueType:
316-
AddPropertyDeclaration(fieldDeclaration, visitor);
316+
AddPropertyDeclaration(fieldDeclaration, fieldDeclaration.Type, visitor);
317317
break;
318318
case IScalarTypeDeclaration scalar:
319-
AddPropertyDeclaration(fieldDeclaration, visitor);
319+
AddPropertyDeclaration(fieldDeclaration, fieldDeclaration, visitor);
320320
AddToSource(scalar.CreateScalarInitializer(this.Project?.CompilerOptions?.TargetPlatfromMoniker));
321321
break;
322322
case IReferenceTypeDeclaration d:
323323
case IStructuredTypeDeclaration s:
324-
AddPropertyDeclaration(fieldDeclaration, visitor);
324+
AddPropertyDeclaration(fieldDeclaration, fieldDeclaration.Type, visitor);
325325
AddToSource(" = new ");
326326
eligibility.eligibleType.Accept(visitor, this);
327327
//fieldDeclaration.Type.Accept(visitor, this);

src/AXSharp.compiler/src/ixc/Properties/launchSettings.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@
88
"commandName": "Project",
99
"workingDirectory": "c:\\W\\Develop\\gh\\inxton\\axopen\\src\\integrations\\ctrl\\"
1010
},
11+
"axopen-integration_plc": {
12+
"commandName": "Project",
13+
"workingDirectory": "C:\\W\\Develop\\gh\\inxton\\simatic-ax\\axopen.templates\\axopen\\src\\integrations\\app"
14+
},
1115
"ixc-simple-template": {
12-
"commandName": "Project",
16+
"commandName": "Project",
1317
"workingDirectory": "C:\\W\\Develop\\gh\\inxton\\simatic-ax\\axopen.templates\\axopen.template.simple\\ax"
1418
},
1519
"ixc-template-ref": {

0 commit comments

Comments
 (0)