Browse Source

Fixed a regression when an abstract implementation has a function from a secondary base.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/719/head 0.7.9
Dimitar Dobrev 9 years ago
parent
commit
4cb5412915
  1. 5
      src/Generator/Generators/CSharp/CSharpSources.cs
  2. 3
      src/Generator/Passes/MultipleInheritancePass.cs

5
src/Generator/Generators/CSharp/CSharpSources.cs

@ -2804,10 +2804,11 @@ namespace CppSharp.Generators.CSharp @@ -2804,10 +2804,11 @@ namespace CppSharp.Generators.CSharp
private string GetInstanceParam(Function function)
{
var from = (Class) function.Namespace;
var to = function.OriginalFunction == null ||
var to = (function.OriginalFunction == null ||
// we don't need to offset the instance with Itanium if there's an existing interface impl
(Context.ParserOptions.IsItaniumLikeAbi &&
!((Class) function.OriginalNamespace).IsInterface) ?
!((Class) function.OriginalNamespace).IsInterface)) &&
function.SynthKind != FunctionSynthKind.AbstractImplCall ?
@from.BaseClass : (Class) function.OriginalFunction.Namespace;
var baseOffset = 0u;

3
src/Generator/Passes/MultipleInheritancePass.cs

@ -171,7 +171,8 @@ namespace CppSharp.Passes @@ -171,7 +171,8 @@ namespace CppSharp.Passes
ParameterTypeComparer.Instance));
if (existingImpl != null)
{
existingImpl.OriginalFunction = method;
if (existingImpl.OriginalFunction == null)
existingImpl.OriginalFunction = method;
continue;
}
var impl = new Method(method)

Loading…
Cancel
Save