Index: src/Boo.Lang.Compiler/Steps/ProcessMethodBodies.cs =================================================================== --- src/Boo.Lang.Compiler/Steps/ProcessMethodBodies.cs (revision 2499) +++ src/Boo.Lang.Compiler/Steps/ProcessMethodBodies.cs (working copy) @@ -2549,10 +2549,11 @@ return ResolveAmbiguousTypeReference(node, candidates); } } - return candidates; + + return ResolveAmbiguousReferenceByAccessibility(candidates); } - - private IEntity ResolveAmbiguousMethodReference(ReferenceExpression node, Ambiguous candidates, ExpressionCollection args) + + private IEntity ResolveAmbiguousMethodReference(ReferenceExpression node, Ambiguous candidates, ExpressionCollection args) { //BOO-656 if (!AstUtil.IsTargetOfMethodInvocation(node) @@ -2608,7 +2609,22 @@ return node.Entity; } - private int GetIndex(IEntity[] entities, IEntity entity) + private IEntity ResolveAmbiguousReferenceByAccessibility(Ambiguous candidates) + { + List newEntities = new List(); + foreach (IEntity entity in candidates.Entities) + { + if (!IsInaccessible(entity)) + { newEntities.Add(entity); } + } + + if (newEntities.Count == 1) + { return (IEntity)newEntities[0]; } + + return new Ambiguous(newEntities); + } + + private int GetIndex(IEntity[] entities, IEntity entity) { for (int i=0; i