[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