Skip to content

Commit 27afa95

Browse files
committed
Fixed static properties.
Ignore ArrayType in parameters. Small changes to code.
1 parent 613a1f9 commit 27afa95

File tree

2 files changed

+221
-138
lines changed

2 files changed

+221
-138
lines changed

CSharpToJavaScript/CSTOJS.cs

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using System;
1313
using CSharpToJavaScript.Utils;
1414

15+
1516
namespace CSharpToJavaScript
1617
{
1718
/// <summary>
@@ -500,28 +501,50 @@ private void Generate(SyntaxTree? tree, Assembly? assembly, List<MetadataReferen
500501
references.Add(MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "CSharpToJavaScript.dll")));
501502
}
502503

503-
//TODO! does not work... sigh
504-
//references = references.Distinct().ToList();
504+
505+
//https://stackoverflow.com/a/12073675
506+
List<MetadataReference> trueReferences = new();
507+
508+
foreach (MetadataReference item in references)
509+
{
510+
bool found = false;
511+
foreach (MetadataReference resultItem in trueReferences)
512+
{
513+
if (resultItem.Display == item.Display)
514+
found = true;
515+
}
516+
517+
if (!found)
518+
{
519+
trueReferences.Add(item);
520+
}
521+
}
505522

506523
if (_Options.Debug)
507524
{
508525
_Log.SuccessLine($"+++");
509526
_Log.WriteLine($"Path assembly: {assemblyPath}");
510527
_Log.WriteLine($"Path rt: {rtPath}");
511-
_Log.WriteLine($"List of references:");
528+
_Log.WriteLine($"List of references({references.Count}):");
512529
foreach (MetadataReference reference in references)
513530
{
514-
_Log.WriteLine(reference.Display);
531+
_Log.WriteLine(reference.Display ?? "null display string");
532+
}
533+
_Log.WriteLine($"List of trueReferences({trueReferences.Count}):");
534+
foreach (MetadataReference reference in trueReferences)
535+
{
536+
_Log.WriteLine(reference.Display ?? "null display string");
515537
}
516538
_Log.SuccessLine($"+++");
517539
}
518540

519541
SyntaxTree trueST = trueRoot.SyntaxTree;
520542
CSharpCompilation compilation = CSharpCompilation
521543
.Create("HelloWorld")
522-
.AddReferences(references.ToArray())
544+
.AddReferences(trueReferences.ToArray())
523545
.AddSyntaxTrees(trueST);
524546

547+
525548
_Walker = new(_Options, compilation.GetSemanticModel(trueST));
526549

527550
_Walker.JSSB.Append(_Options.AddSBInFront);

0 commit comments

Comments
 (0)