[svn] r6911: vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleAuthoringScope.cs

pbludov svnadmin at nemerle.org
Thu Nov 16 08:19:20 CET 2006


Log:
Language check. Only .n files will be parsed.

Author: pbludov
Date: Thu Nov 16 08:19:17 2006
New Revision: 6911

Modified:
   vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleAuthoringScope.cs

Modified: vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleAuthoringScope.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleAuthoringScope.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/LanguageService/NemerleAuthoringScope.cs	Thu Nov 16 08:19:17 2006
@@ -219,9 +219,11 @@
 
 			try
 			{
-				if (info.Member is MethodBase)
+				switch (info.Member.MemberType)
 				{
-					MethodBase mb = (MethodBase)info.Member;
+					case MemberTypes.Constructor:
+					case MemberTypes.Method:
+						MethodBase mb = (MethodBase) info.Member;
 
 					// Abstract methods does not contain any code.
 					//
@@ -229,36 +231,38 @@
 						methods.AddRange(mb.DeclaringType.GetMethods(DeclaredMembers));
 					else
 						methods.Add(mb);
-				}
-				else if (info.Member is PropertyInfo)
-				{
-					PropertyInfo pi = (PropertyInfo)info.Member;
+						break;
+
+					case MemberTypes.Property:
+						PropertyInfo pi = (PropertyInfo) info.Member;
 					methods.AddRange(pi.GetAccessors(true));
-				}
-				else if (info.Member is FieldInfo)
-				{
-					Type t = info.Member.DeclaringType;
-					methods.AddRange(t.GetMethods(DeclaredMembers));
-				}
-				else if (info.Member is EventInfo)
-				{
-					EventInfo ei = (EventInfo)info.Member;
-					methods.Add     (ei.GetAddMethod   (true));
-					methods.Add     (ei.GetRemoveMethod(true));
-					methods.Add     (ei.GetRaiseMethod (true));
+						break;
+
+					case MemberTypes.Field:
+						methods.AddRange(info.Member.DeclaringType.GetMethods(DeclaredMembers));
+						break;
+
+					case MemberTypes.Event:
+						EventInfo ei = (EventInfo) info.Member;
+						methods.Add(ei.GetAddMethod   (true));
+						methods.Add(ei.GetRemoveMethod(true));
+						methods.Add(ei.GetRaiseMethod (true));
 					methods.AddRange(ei.GetOtherMethods(true));
-				}
-				else if (info.Member is Type)
-				{
+						break;
+
+					case MemberTypes.TypeInfo:
+					case MemberTypes.NestedType:
 					Type t = (Type)info.Member;
 					methods.AddRange(t.GetMethods(DeclaredMembers));
+						break;
+					default:
+						Trace.Fail("Unexpected MemberType " + info.Member.MemberType);
+						break;
 				}
-				else
-					Trace.Fail("Unexpected MemberInfo " + info.Member.GetType().FullName);
 
 				foreach (MethodBase mb in methods)
 				{
-					if (Attribute.GetCustomAttribute(mb, typeof(CompilerGeneratedAttribute)) != null)
+					if (mb == null || Attribute.GetCustomAttribute(mb, typeof(CompilerGeneratedAttribute)) != null)
 						continue;
 
 					try
@@ -312,7 +316,9 @@
 				return infos.ToArray();
 			}
 
-			if (_findExactLocation)
+			// TODO: implement other languages then nemerle
+
+			if (_findExactLocation && Path.GetExtension(infos[0].FilePath) == "n")
 			{
 				// Quickly compile and find the _exact_ location(s)
 				//



More information about the svn mailing list