From 4fc5c616fab9649e07c9c0b9edacb84cd1f63e47 Mon Sep 17 00:00:00 2001 From: Rob Bocchino Date: Thu, 10 Apr 2025 16:25:30 -0700 Subject: [PATCH] Fix bug in syntax writers --- compiler/lib/src/main/scala/codegen/AstWriter.scala | 3 ++- compiler/lib/src/main/scala/codegen/FppWriter.scala | 3 ++- compiler/tools/fpp-format/test/include.ref.txt | 2 +- compiler/tools/fpp-format/test/no_include.ref.txt | 2 +- compiler/tools/fpp-syntax/test/syntax-ast.ref.txt | 1 + compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt | 1 + compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt | 1 + compiler/tools/fpp-syntax/test/syntax.fpp | 2 +- 8 files changed, 10 insertions(+), 5 deletions(-) diff --git a/compiler/lib/src/main/scala/codegen/AstWriter.scala b/compiler/lib/src/main/scala/codegen/AstWriter.scala index 3d2ecec81..1a3a18ae5 100644 --- a/compiler/lib/src/main/scala/codegen/AstWriter.scala +++ b/compiler/lib/src/main/scala/codegen/AstWriter.scala @@ -129,7 +129,8 @@ object AstWriter extends AstVisitor with LineUtils { List.concat( ident(data.name), linesOpt(typeNameNode, data.typeName), - data.constants.flatMap(annotateNode(defEnumConstant)) + data.constants.flatMap(annotateNode(defEnumConstant)), + linesOpt(addPrefix("default", exprNode), data.default) ).map(indentIn) } diff --git a/compiler/lib/src/main/scala/codegen/FppWriter.scala b/compiler/lib/src/main/scala/codegen/FppWriter.scala index 2aa5a0fa4..6f76d5f4c 100644 --- a/compiler/lib/src/main/scala/codegen/FppWriter.scala +++ b/compiler/lib/src/main/scala/codegen/FppWriter.scala @@ -219,7 +219,8 @@ object FppWriter extends AstVisitor with LineUtils { joinOpt (data.typeName) (": ") (typeNameNode). joinNoIndent (" ") ( addBraces(data.constants.flatMap(annotateNode(defEnumConstant))) - ) + ). + joinOpt (data.default) (" default ") (exprNode) } override def defGuardAnnotatedNode( diff --git a/compiler/tools/fpp-format/test/include.ref.txt b/compiler/tools/fpp-format/test/include.ref.txt index 1f6fbdc60..9e43bca3b 100644 --- a/compiler/tools/fpp-format/test/include.ref.txt +++ b/compiler/tools/fpp-format/test/include.ref.txt @@ -30,7 +30,7 @@ module DefinitionsAndSpecifiers { X Y Z - } + } default X @ Container specifier product container C id 0x00 default priority 10 @< Container specifier diff --git a/compiler/tools/fpp-format/test/no_include.ref.txt b/compiler/tools/fpp-format/test/no_include.ref.txt index d92e1ef4e..f6e0ac8a0 100644 --- a/compiler/tools/fpp-format/test/no_include.ref.txt +++ b/compiler/tools/fpp-format/test/no_include.ref.txt @@ -30,7 +30,7 @@ module DefinitionsAndSpecifiers { X Y Z - } + } default X @ Container specifier product container C id 0x00 default priority 10 @< Container specifier diff --git a/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt b/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt index 1c43abf11..643bd02f9 100644 --- a/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt +++ b/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt @@ -52,6 +52,7 @@ def module ident Y def enum constant ident Z + default ident X @ Container specifier spec container ident C diff --git a/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt b/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt index e2de0ee82..66fe5f04e 100644 --- a/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt +++ b/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt @@ -52,6 +52,7 @@ def module ident Y def enum constant ident Z + default ident X @ Container specifier spec container ident C diff --git a/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt b/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt index e2de0ee82..66fe5f04e 100644 --- a/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt +++ b/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt @@ -52,6 +52,7 @@ def module ident Y def enum constant ident Z + default ident X @ Container specifier spec container ident C diff --git a/compiler/tools/fpp-syntax/test/syntax.fpp b/compiler/tools/fpp-syntax/test/syntax.fpp index e3a3931ab..4c0253c7d 100644 --- a/compiler/tools/fpp-syntax/test/syntax.fpp +++ b/compiler/tools/fpp-syntax/test/syntax.fpp @@ -23,7 +23,7 @@ module DefinitionsAndSpecifiers { type T array A = [3] U32 struct S { x: [3] U32, y: F32, z: string } - enum E { X, Y, Z } + enum E { X, Y, Z } default X @ Container specifier product container C id 0x00 default priority 10