From 0478498ebaf5009b757c20aea77e582897f993ae Mon Sep 17 00:00:00 2001 From: tritao <joao@tritao.eu> Date: Fri, 18 Apr 2025 00:50:08 +0100 Subject: [PATCH] Ignore functions returning tag types for now in JS generation. --- src/Generator/Options.cs | 2 ++ src/Generator/Passes/CheckIgnoredDecls.cs | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/Generator/Options.cs b/src/Generator/Options.cs index 0d9a0008..1c078b47 100644 --- a/src/Generator/Options.cs +++ b/src/Generator/Options.cs @@ -205,6 +205,8 @@ namespace CppSharp public bool IsCLIGenerator => GeneratorKind == GeneratorKind.CLI; + public bool IsJSGenerator => GeneratorKind == GeneratorKind.Emscripten || GeneratorKind == GeneratorKind.QuickJS; + public readonly List<string> DependentNameSpaces = new List<string>(); public bool MarshalCharAsManagedChar { get; set; } public bool MarshalConstCharArrayAsString { get; set; } = true; diff --git a/src/Generator/Passes/CheckIgnoredDecls.cs b/src/Generator/Passes/CheckIgnoredDecls.cs index 0ebf99f1..84721f20 100644 --- a/src/Generator/Passes/CheckIgnoredDecls.cs +++ b/src/Generator/Passes/CheckIgnoredDecls.cs @@ -184,6 +184,14 @@ namespace CppSharp.Passes return false; } + if (Options.IsJSGenerator && function is Method { Kind: CXXMethodKind.Normal } && ret.Type.GetFinalPointee().IsClass()) + { + function.ExplicitlyIgnore(); + Diagnostics.Debug("Function '{0}' was ignored due to {1} return decl not yet implemented in JS generators", + function.Name, msg); + return false; + } + foreach (var param in function.Parameters) { if (HasInvalidDecl(param, out msg))