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 DependentNameSpaces = new List(); 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))