Skip to content

Commit 196ba40

Browse files
committed
Supporting using const fields in hardware entry types (since they don't do anything on the hardware)
1 parent 62cf446 commit 196ba40

5 files changed

Lines changed: 203 additions & 19 deletions

File tree

src/Hastlayer/Hast.Transformer.Vhdl/Verifiers/HardwareEntryPointsVerifier.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ private void VerifyHardwareEntryPoints(SyntaxTree syntaxTree, ITypeDeclarationLo
3636
{
3737
var unsupportedMembers = type
3838
.Members
39-
.Where(member => member is FieldDeclaration || member is PropertyDeclaration || member.GetFullName().IsConstructorName());
39+
.Where(member =>
40+
(member is FieldDeclaration or PropertyDeclaration && !member.HasModifier(Modifiers.Const)) ||
41+
member.GetFullName().IsConstructorName());
4042
if (unsupportedMembers.Any())
4143
{
4244
throw new NotSupportedException(

src/Hastlayer/Hast.Transformer/Services/ConstantValuesSubstitution/ConstantValuesSubstitutingVisitor.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,9 +256,10 @@ protected override void VisitChildren(AstNode node)
256256
}
257257
}
258258

259-
// Is this a const? Then we can just substitute it directly.
259+
// Is this a const expression? Then we can just substitute it directly.
260260
var resolveResult = node.GetResolveResult();
261-
if (resolveResult?.IsCompileTimeConstant == true &&
261+
if (node is Expression &&
262+
resolveResult?.IsCompileTimeConstant == true &&
262263
resolveResult.ConstantValue != null &&
263264
node is not PrimitiveExpression)
264265
{

test/Hast.Transformer.Vhdl.Tests/VerificationTests/StaticTestInputAssembliesVerificationTests.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ public Task StaticTestInputAssemblyMatchesApproved() =>
3030
new[] { typeof(ArrayUsingCases).Assembly },
3131
configuration =>
3232
{
33-
configuration.TransformerConfiguration().UseSimpleMemory = false;
33+
var transformerConfiguration = configuration.TransformerConfiguration();
34+
transformerConfiguration.UseSimpleMemory = false;
35+
transformerConfiguration.ArrayLengths.Add(
36+
"System.Int32 Hast.TestInputs.Static.ArrayUsingCases+<>c::<PassArrayToTask>b__1_0(System.Object).arrayObject",
37+
ArrayUsingCases.TaskArrayLength);
3438

3539
configuration
3640
.TransformerConfiguration()

0 commit comments

Comments
 (0)