Browse Source

Fix bug in test code

Can't return `T();` if `T` is a const reference type.
pull/1919/head
duckdoom5 4 months ago
parent
commit
6e56eadf96
  1. 12
      src/Generator/Passes/SymbolsCodeGenerator.cs
  2. 5
      tests/dotnet/CSharp/CSharpTemplates.h

12
src/Generator/Passes/SymbolsCodeGenerator.cs

@ -162,8 +162,7 @@ namespace CppSharp.Passes @@ -162,8 +162,7 @@ namespace CppSharp.Passes
bool isAbstract = ((Class)method.Namespace).IsAbstract;
if (method.Access == AccessSpecifier.Protected || isAbstract)
{
Write($@"{{ ::new ({Helpers.InstanceField}) {
wrapper}{method.Namespace.Name}({@params}); }}");
Write($@"{{ ::new ({Helpers.InstanceField}) {wrapper}{method.Namespace.Name}({@params}); }}");
WriteLine(!isAbstract ? " };" : string.Empty);
}
else
@ -210,12 +209,10 @@ namespace CppSharp.Passes @@ -210,12 +209,10 @@ namespace CppSharp.Passes
{
string @class = wrapper + method.Namespace.Name;
WriteLine($"() {{ this->~{@class}(); }} }};");
Write($@"extern ""C"" {GetExporting()}void {wrapper}({
@class}* {instance}) {{ {instance}->{wrapper}Protected");
Write($@"extern ""C"" {GetExporting()}void {wrapper}({@class}* {instance}) {{ {instance}->{wrapper}Protected");
}
else
Write($@"({$"{@namespace}*{instance}"}) {{ {
instance}->~{method.Namespace.Name}");
Write($@"({$"{@namespace}*{instance}"}) {{ {instance}->~{method.Namespace.Name}");
WriteLine("(); }");
}
@ -238,8 +235,7 @@ namespace CppSharp.Passes @@ -238,8 +235,7 @@ namespace CppSharp.Passes
var method = function as Method;
if (function.Namespace.Access == AccessSpecifier.Protected)
Write($@"class {wrapper}{function.Namespace.Name} : public {
function.Namespace.Namespace.Visit(cppTypePrinter)} {{ ");
Write($@"class {wrapper}{function.Namespace.Name} : public {function.Namespace.Namespace.Visit(cppTypePrinter)} {{ ");
string variable = $@"({(method?.IsStatic == false ?
(@namespace + "::") : string.Empty)}*{wrapper}){signature}";

5
tests/dotnet/CSharp/CSharpTemplates.h

@ -163,9 +163,10 @@ T IndependentFields<T>::getDependent(const T& t) @@ -163,9 +163,10 @@ T IndependentFields<T>::getDependent(const T& t)
}
template <typename T>
T IndependentFields<T>::property()
typename IndependentFields<T>::Type IndependentFields<T>::property()
{
return T();
std::remove_reference_t<std::remove_const_t<Type>> t;
return t;
}
template <typename T>

Loading…
Cancel
Save