Browse Source

Fixed a bug in the getting of the root base method: the bases after the first one were ignored.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/68/head
Dimitar Dobrev 12 years ago
parent
commit
5e9de92b78
  1. 12
      src/AST/Class.cs

12
src/AST/Class.cs

@ -215,14 +215,15 @@ namespace CppSharp.AST
method.Parameters.SequenceEqual(@override.Parameters, method.Parameters.SequenceEqual(@override.Parameters,
new ParameterTypeComparer()) new ParameterTypeComparer())
select method).FirstOrDefault() select method).FirstOrDefault()
let rootBaseMethod = @base.Class.GetRootBaseMethod(@override) let rootBaseMethod = @base.Class.GetRootBaseMethod(@override) ?? baseMethod
select rootBaseMethod ?? baseMethod).FirstOrDefault(); where rootBaseMethod != null
select rootBaseMethod).FirstOrDefault();
} }
public Property GetRootBaseProperty(Property @override) public Property GetRootBaseProperty(Property @override)
{ {
return (from @base in Bases return (from @base in Bases
let baseMethod = ( let baseProperty = (
from property in @base.Class.Properties from property in @base.Class.Properties
where where
property.Name == @override.Name && property.Name == @override.Name &&
@ -230,8 +231,9 @@ namespace CppSharp.AST
property.Parameters.SequenceEqual(@override.Parameters, property.Parameters.SequenceEqual(@override.Parameters,
new ParameterTypeComparer()) new ParameterTypeComparer())
select property).FirstOrDefault() select property).FirstOrDefault()
let rootBaseMethod = @base.Class.GetRootBaseProperty(@override) let rootBaseProperty = @base.Class.GetRootBaseProperty(@override) ?? baseProperty
select rootBaseMethod ?? baseMethod).FirstOrDefault(); where rootBaseProperty != null
select rootBaseProperty).FirstOrDefault();
} }
public override T Visit<T>(IDeclVisitor<T> visitor) public override T Visit<T>(IDeclVisitor<T> visitor)

Loading…
Cancel
Save