Skip to content

Commit 306ac17

Browse files
committed
Fix: Allow parsing of function definitions containing params with no param names.
E.g. void myFunc(int, int);
1 parent 3ff1073 commit 306ac17

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

ShaderShrinker/Shrinker.Parser/SyntaxNodes/FunctionSyntaxNodeBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ public List<GenericSyntaxNode> ParamNames
3030
{
3131
if (!Params.Children.Any())
3232
return new List<GenericSyntaxNode>();
33-
var children = Params.Children.OfType<GenericSyntaxNode>().Where(o => o.Token is AlphaNumToken || o.Token is CommaToken).Append(new GenericSyntaxNode(new CommaToken())).ToList();
33+
var children = Params.Children.OfType<GenericSyntaxNode>().Where(o => o.Token is AlphaNumToken or CommaToken).Append(new GenericSyntaxNode(new CommaToken())).ToList();
3434
var commaIndexes = children.Where(o => o.Token is CommaToken).Select(o => children.IndexOf(o));
35-
return commaIndexes.Select(i => children[i - 1]).ToList();
35+
return commaIndexes.Where(i => i > 0 && children[i - 1].Token is not CommaToken).Select(i => children[i - 1]).ToList();
3636
}
3737
}
3838

ShaderShrinker/UnitTests/ShrinkerTests.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -621,11 +621,13 @@ public void CheckFunctionDeclarationsWithoutDefinitionsAreRemoved()
621621
Assert.That(rootNode.ToCode().ToSimple(), Is.EqualTo("void main() { }"));
622622
}
623623

624-
[Test]
625-
public void CheckFunctionDeclarationParamNamesAreRemoved()
624+
[Test, Sequential]
625+
public void CheckFunctionDeclarationParamNamesAreRemoved(
626+
[Values("void foo(int a, int b); void main() { foo(1, 2); } void foo(int a, int b) { }",
627+
"void foo(int, int); void main() { foo(1, 2); } void foo(int a, int b) { }")] string code)
626628
{
627629
var lexer = new Lexer();
628-
lexer.Load("void foo(int a, int b); void main() { foo(1, 2); } void foo(int a, int b) { }");
630+
lexer.Load(code);
629631

630632
var options = CustomOptions.None();
631633
options.SimplifyFunctionDeclarations = true;

0 commit comments

Comments
 (0)