Browse Source

Fix for the parameter identity in accessors issue.

newNRvisualizers
Erik Källén 14 years ago
parent
commit
9476183889
  1. 41
      ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs

41
ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs

@ -850,15 +850,21 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
resolver.CurrentTypeResolveContext, propertyOrIndexerDeclaration.EntityType, name, resolver.CurrentTypeResolveContext, propertyOrIndexerDeclaration.EntityType, name,
explicitInterfaceType, parameterTypeReferences: parameterTypeReferences); explicitInterfaceType, parameterTypeReferences: parameterTypeReferences);
} }
resolver = resolver.WithCurrentMember(member);
for (AstNode node = propertyOrIndexerDeclaration.FirstChild; node != null; node = node.NextSibling) { for (AstNode node = propertyOrIndexerDeclaration.FirstChild; node != null; node = node.NextSibling) {
if (node.Role == PropertyDeclaration.SetterRole && member != null) { if (node.Role == PropertyDeclaration.GetterRole && member is IProperty) {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
resolver = resolver.AddVariable(new DefaultParameter(member.ReturnType, "value")); resolver = resolver.WithCurrentMember(((IProperty)member).Getter);
Scan(node); Scan(node);
resolver = resolver.PopBlock(); resolver = resolver.PopBlock();
} else { }
else if (node.Role == PropertyDeclaration.SetterRole && member is IProperty) {
resolver = resolver.PushBlock();
resolver = resolver.WithCurrentMember(((IProperty)member).Setter);
Scan(node);
resolver = resolver.PopBlock();
}
else {
Scan(node); Scan(node);
} }
} }
@ -898,16 +904,25 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
explicitInterfaceAstType.ToTypeReference()); explicitInterfaceAstType.ToTypeReference());
} }
} }
resolver = resolver.WithCurrentMember(member);
for (AstNode node = eventDeclaration.FirstChild; node != null; node = node.NextSibling) {
if (member != null) { if (node.Role == CustomEventDeclaration.AddAccessorRole && member is IEvent) {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
resolver = resolver.AddVariable(new DefaultParameter(member.ReturnType, "value")); resolver = resolver.WithCurrentMember(((IEvent)member).AddAccessor);
ScanChildren(eventDeclaration); Scan(node);
} else { resolver = resolver.PopBlock();
ScanChildren(eventDeclaration); }
else if (node.Role == CustomEventDeclaration.RemoveAccessorRole && member is IEvent) {
resolver = resolver.PushBlock();
resolver = resolver.WithCurrentMember(((IEvent)member).RemoveAccessor);
Scan(node);
resolver = resolver.PopBlock();
}
else {
Scan(node);
}
} }
if (member != null) if (member != null)
return new MemberResolveResult(null, member, false); return new MemberResolveResult(null, member, false);
else else

Loading…
Cancel
Save