microsoft / node-api-dotnet

Advanced interoperability between .NET and JavaScript in the same process.
MIT License
426 stars 49 forks source link

Getting a compilation error when returning an array. #276

Closed smeatond closed 2 months ago

smeatond commented 2 months ago

Hi there,

I am just playing around with this library and in my .NET project, when I try to return an array of any type from (tested mode, byte, int, string) I am getting the follow error:

CSC : error NAPI1001: NullReferenceException : Object reference not set to an instance of an object. at Micro soft.JavaScript.NodeApi.Generator.SourceGenerator.GetNamespace(ISymbol symbol) at Microsoft.JavaScript.NodeAp i.Generator.SourceGenerator.GetFullName(ISymbol symbol) at Microsoft.JavaScript.NodeApi.Generator.ModuleGener ator.IsMethodCallbackAdapterRequired(IMethodSymbol method) at Microsoft.JavaScript.NodeApi.Generator.ModuleGe nerator.ExportMethod(SourceBuilder& s, IEnumerable1 methods, String exportName) at Microsoft.JavaScript.Node Api.Generator.ModuleGenerator.ExportMembers(SourceBuilder& s, ITypeSymbol type) at Microsoft.JavaScript.NodeA pi.Generator.ModuleGenerator.ExportType(SourceBuilder& s, ITypeSymbol type, String exportName) at Microsoft.J avaScript.NodeApi.Generator.ModuleGenerator.ExportModule(SourceBuilder& s, ITypeSymbol moduleType, IEnumerable 1 exportItems) at Microsoft.JavaScript.NodeApi.Generator.ModuleGenerator.GenerateModuleInitializer(ISymbol mo duleInitializer, IEnumerable`1 exportItems) at Microsoft.JavaScript.NodeApi.Generator.ModuleGenerator.Execute (GeneratorExecutionContext context)

[JSExport]
public static class Example

{
....
   public static string[] Test2() {
        return ["1", "2"];
    } 
}

Details: Target Framework: net 8.0

jasongin commented 2 months ago

Thanks for the bug report. PR #278 fixes it.

While we have some test cases covering arrays, they were only using arrays with properties, while this bug is specific to arrays used with methods.