Browse Source

Merge remote-tracking branch 'upstream/master' into simonl

Conflicts:
	ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
newNRvisualizers
Simon Lindgren 14 years ago
parent
commit
3ef7fd79dd
  1. 18
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 12
      ICSharpCode.NRefactory/TypeSystem/ExtensionMethods.cs

18
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

@ -207,7 +207,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return contextList.Result; return contextList.Result;
} }
foreach (var m in initializerResult.Item1.Type.GetMembers (m => m.IsPublic && (m.EntityType == EntityType.Property || m.EntityType == EntityType.Field))) { foreach (var m in initializerResult.Item1.Type.GetMembers (m => !m.IsSynthetic && m.IsPublic && (m.EntityType == EntityType.Property || m.EntityType == EntityType.Field))) {
contextList.AddMember(m); contextList.AddMember(m);
} }
@ -1266,6 +1266,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
if (currentType != null) { if (currentType != null) {
for (var ct = currentType; ct != null; ct = ct.DeclaringTypeDefinition) { for (var ct = currentType; ct != null; ct = ct.DeclaringTypeDefinition) {
foreach (var nestedType in ct.NestedTypes) { foreach (var nestedType in ct.NestedTypes) {
if (nestedType.IsSynthetic)
continue;
string name = nestedType.Name; string name = nestedType.Name;
if (IsAttributeContext(node) && name.EndsWith("Attribute") && name.Length > "Attribute".Length) { if (IsAttributeContext(node) && name.EndsWith("Attribute") && name.Length > "Attribute".Length) {
name = name.Substring(0, name.Length - "Attribute".Length); name = name.Substring(0, name.Length - "Attribute".Length);
@ -1294,6 +1296,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
if (member is IMethod && ((IMethod)member).FullName == "System.Object.Finalize") { if (member is IMethod && ((IMethod)member).FullName == "System.Object.Finalize") {
continue; continue;
} }
if (member.IsSynthetic)
continue;
if (member.EntityType == EntityType.Operator) { if (member.EntityType == EntityType.Operator) {
continue; continue;
} }
@ -1310,7 +1314,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} }
var declaring = def.DeclaringTypeDefinition; var declaring = def.DeclaringTypeDefinition;
while (declaring != null) { while (declaring != null) {
foreach (var member in declaring.GetMembers (m => m.IsStatic)) { foreach (var member in declaring.GetMembers (m => m.IsStatic && !m.IsSynthetic)) {
if (memberPred == null || memberPred(member)) { if (memberPred == null || memberPred(member)) {
wrapper.AddMember(member); wrapper.AddMember(member);
} }
@ -2092,6 +2096,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
var nr = (NamespaceResolveResult)resolveResult; var nr = (NamespaceResolveResult)resolveResult;
if (!(resolvedNode.Parent is UsingDeclaration || resolvedNode.Parent != null && resolvedNode.Parent.Parent is UsingDeclaration)) { if (!(resolvedNode.Parent is UsingDeclaration || resolvedNode.Parent != null && resolvedNode.Parent.Parent is UsingDeclaration)) {
foreach (var cl in nr.Namespace.Types) { foreach (var cl in nr.Namespace.Types) {
if (cl.IsSynthetic)
continue;
string name = cl.Name; string name = cl.Name;
if (hintType != null && hintType.Kind != TypeKind.Array && cl.Kind == TypeKind.Interface) { if (hintType != null && hintType.Kind != TypeKind.Array && cl.Kind == TypeKind.Interface) {
continue; continue;
@ -2230,6 +2236,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
var namespaceContents = new CompletionDataWrapper(this); var namespaceContents = new CompletionDataWrapper(this);
foreach (var cl in nr.Namespace.Types) { foreach (var cl in nr.Namespace.Types) {
if (cl.IsSynthetic)
continue;
IType addType = typePred != null ? typePred(cl) : cl; IType addType = typePred != null ? typePred(cl) : cl;
if (addType != null) if (addType != null)
namespaceContents.AddType(addType, addType.Name); namespaceContents.AddType(addType, addType.Name);
@ -2330,6 +2338,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
var filteredList = new List<IMember>(); var filteredList = new List<IMember>();
foreach (var member in type.GetMembers ()) { foreach (var member in type.GetMembers ()) {
if (member.IsSynthetic)
continue;
if (member.EntityType == EntityType.Indexer || member.EntityType == EntityType.Operator || member.EntityType == EntityType.Constructor || member.EntityType == EntityType.Destructor) { if (member.EntityType == EntityType.Indexer || member.EntityType == EntityType.Operator || member.EntityType == EntityType.Constructor || member.EntityType == EntityType.Destructor) {
continue; continue;
} }
@ -2380,7 +2390,9 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} }
if (resolveResult is TypeResolveResult || includeStaticMembers) { if (resolveResult is TypeResolveResult || includeStaticMembers) {
foreach (var nested in type.GetNestedTypes ()) { foreach (var nested in type.GetNestedTypes (t => !t.IsSynthetic)) {
if (!lookup.IsAccessible(nested.GetDefinition(), isProtectedAllowed))
continue;
IType addType = typePred != null ? typePred(nested) : nested; IType addType = typePred != null ? typePred(nested) : nested;
if (addType != null) if (addType != null)
result.AddType(addType, addType.Name); result.AddType(addType, addType.Name);

12
ICSharpCode.NRefactory/TypeSystem/ExtensionMethods.cs

@ -92,7 +92,7 @@ namespace ICSharpCode.NRefactory.TypeSystem
} }
#endregion #endregion
#region IsOpen / IsUnbound #region IsOpen / IsUnbound / IsKnownType
sealed class TypeClassificationVisitor : TypeVisitor sealed class TypeClassificationVisitor : TypeVisitor
{ {
internal bool isOpen; internal bool isOpen;
@ -140,6 +140,16 @@ namespace ICSharpCode.NRefactory.TypeSystem
throw new ArgumentNullException("type"); throw new ArgumentNullException("type");
return type is ITypeDefinition && type.TypeParameterCount > 0; return type is ITypeDefinition && type.TypeParameterCount > 0;
} }
/// <summary>
/// Gets whether the type is the specified known type.
/// For generic known types, this returns true any parameterization of the type (and also for the definition itself).
/// </summary>
public static bool IsKnownType(this IType type, KnownTypeCode knownType)
{
var def = type.GetDefinition();
return def != null && def.KnownTypeCode == knownType;
}
#endregion #endregion
#region Import #region Import

Loading…
Cancel
Save