Browse Source

Fixed SD2-400: Importing classes (VB.NET).

Fixed code completion on "value" in property setters.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@353 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
3d4f0a78f7
  1. 2
      setup/buildSetup.bat
  2. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/ExpressionFinder.cs
  3. 3
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs
  4. 2
      src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.addin
  5. 1158
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  6. 23
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  7. 1669
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  8. 8
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  9. 14
      src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs
  10. 15
      src/Main/Base/Project/Src/Dom/LanguageProperties.cs
  11. 6
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs
  12. 81
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  13. 8
      src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs
  14. 20
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs
  15. 196
      src/Main/Base/Test/NRefactoryResolverTests.cs
  16. 8
      src/SharpDevelop.WithTests.sln
  17. 2
      src/Tools/SVNChangeLogToXml/Main.cs
  18. 14
      src/publish.bat

2
setup/buildSetup.bat

@ -1,3 +1,3 @@
del "Setup.exe" del "Setup.exe"
%PROGRAMFILES%\NSIS\makensis /V2 "Corsavy.nsi" %PROGRAMFILES%\NSIS\makensis /V2 "Corsavy.nsi"
IF %ERRORLEVEL% NEQ 0 PAUSE @IF %ERRORLEVEL% NEQ 0 PAUSE

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/ExpressionFinder.cs

@ -21,7 +21,7 @@ namespace VBNetBinding.Parser
if (expression == null) if (expression == null)
return new ExpressionResult(null); return new ExpressionResult(null);
if (expression.Length > 8 && expression.Substring(0, 8).Equals("Imports ", StringComparison.InvariantCultureIgnoreCase)) if (expression.Length > 8 && expression.Substring(0, 8).Equals("Imports ", StringComparison.InvariantCultureIgnoreCase))
return new ExpressionResult(expression.Substring(8).TrimStart(), ExpressionContext.Namespace, null); return new ExpressionResult(expression.Substring(8).TrimStart(), ExpressionContext.Type, null);
if (expression.Length > 4 && expression.Substring(0, 4).Equals("New ", StringComparison.InvariantCultureIgnoreCase)) if (expression.Length > 4 && expression.Substring(0, 4).Equals("New ", StringComparison.InvariantCultureIgnoreCase))
return new ExpressionResult(expression.Substring(4).TrimStart(), ExpressionContext.ObjectCreation, null); return new ExpressionResult(expression.Substring(4).TrimStart(), ExpressionContext.ObjectCreation, null);
if (curTokenType == Ident && lastIdentifier.Equals("as", StringComparison.InvariantCultureIgnoreCase)) if (curTokenType == Ident && lastIdentifier.Equals("as", StringComparison.InvariantCultureIgnoreCase))

3
src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetCompletionBinding.cs

@ -155,8 +155,7 @@ namespace VBNetBinding
// and possible return types. // and possible return types.
switch (word.ToLower()) { switch (word.ToLower()) {
case "imports": case "imports":
// TODO: check if we are inside class/namespace editor.ShowCompletionWindow(new CodeCompletionDataProvider(new ExpressionResult("Global", ExpressionContext.Type)), ' ');
editor.ShowCompletionWindow(new CtrlSpaceCompletionDataProvider(ExpressionContext.Namespace), ' ');
return true; return true;
case "as": case "as":
editor.ShowCompletionWindow(new CtrlSpaceCompletionDataProvider(ExpressionContext.Type), ' '); editor.ShowCompletionWindow(new CtrlSpaceCompletionDataProvider(ExpressionContext.Type), ' ');

2
src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.addin

@ -28,7 +28,7 @@
class = "MbUnitPad.ReloadCommand"/> class = "MbUnitPad.ReloadCommand"/>
<ToolbarItem id = "Unload" <ToolbarItem id = "Unload"
icon = "Icons.16x16.BrowserCancel" icon = "Icons.16x16.BrowserCancel"
tooltip = "${res:NUnitPad.NUnitPadContent.UnloadItem}" tooltip = "${res:NUnitPad.NUnitPadContent.CancelItem}"
class = "MbUnitPad.UnloadCommand"/> class = "MbUnitPad.UnloadCommand"/>
<ToolbarItem id = "Separator1" type = "Separator"/> <ToolbarItem id = "Separator1" type = "Separator"/>
<ToolbarItem id = "AddMbUnitReference" <ToolbarItem id = "AddMbUnitReference"

1158
src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs

File diff suppressed because it is too large Load Diff

23
src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG

@ -1420,7 +1420,10 @@ GetAccessorDecl<out PropertyGetRegion getBlock, List<AttributeSection> attribute
= =
ident /* "get" is not a keyword!? */ ident /* "get" is not a keyword!? */
(. if (t.val != "get") Error("get expected"); .) (. if (t.val != "get") Error("get expected"); .)
( Block<out stmt> | ";" ) (. getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes); .) (. Point startLocation = t.Location; .)
( Block<out stmt> | ";" )
(. getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes); .)
(. getBlock.StartLocation = startLocation; getBlock.EndLocation = t.EndLocation; .)
. .
SetAccessorDecl<out PropertySetRegion setBlock, List<AttributeSection> attributes> SetAccessorDecl<out PropertySetRegion setBlock, List<AttributeSection> attributes>
@ -1428,7 +1431,10 @@ SetAccessorDecl<out PropertySetRegion setBlock, List<AttributeSection> attribute
= =
ident /* "set" is not a keyword!? */ ident /* "set" is not a keyword!? */
(. if (t.val != "set") Error("set expected"); .) (. if (t.val != "set") Error("set expected"); .)
( Block<out stmt> | ";" ) (. setBlock = new PropertySetRegion((BlockStatement)stmt, attributes); .) (. Point startLocation = t.Location; .)
( Block<out stmt> | ";" )
(. setBlock = new PropertySetRegion((BlockStatement)stmt, attributes); .)
(. setBlock.StartLocation = startLocation; setBlock.EndLocation = t.EndLocation; .)
. .
EventAccessorDecls<out EventAddRegion addBlock, out EventRemoveRegion removeBlock> EventAccessorDecls<out EventAddRegion addBlock, out EventRemoveRegion removeBlock>
@ -1458,27 +1464,34 @@ InterfaceAccessors<out PropertyGetRegion getBlock, out PropertySetRegion setBloc
AttributeSection section; AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>(); List<AttributeSection> attributes = new List<AttributeSection>();
getBlock = null; setBlock = null; getBlock = null; setBlock = null;
PropertyGetSetRegion lastBlock = null;
.) .)
= =
{ AttributeSection<out section> (. attributes.Add(section); .) } { AttributeSection<out section> (. attributes.Add(section); .) }
(. Point startLocation = la.Location; .)
( (
IF (IdentIsGet()) ident (. getBlock = new PropertyGetRegion(null, attributes); .) IF (IdentIsGet()) ident (. getBlock = new PropertyGetRegion(null, attributes); .)
| IF (IdentIsSet()) ident (. setBlock = new PropertySetRegion(null, attributes); .) | IF (IdentIsSet()) ident (. setBlock = new PropertySetRegion(null, attributes); .)
| ident (. Error("set or get expected"); .) | ident (. Error("set or get expected"); .)
) )
";" (. attributes = new List<AttributeSection>(); .) ";"
(. if (getBlock != null) { getBlock.StartLocation = startLocation; getBlock.EndLocation = t.EndLocation; }
if (setBlock != null) { setBlock.StartLocation = startLocation; setBlock.EndLocation = t.EndLocation; }
attributes = new List<AttributeSection>(); .)
[ [
{ AttributeSection<out section> (. attributes.Add(section); .) } { AttributeSection<out section> (. attributes.Add(section); .) }
(. startLocation = la.Location; .)
( (
IF (IdentIsGet()) ident (. if (getBlock != null) Error("get already declared"); IF (IdentIsGet()) ident (. if (getBlock != null) Error("get already declared");
else getBlock = new PropertyGetRegion(null, attributes); else { getBlock = new PropertyGetRegion(null, attributes); lastBlock = getBlock; }
.) .)
| IF (IdentIsSet()) ident (. if (setBlock != null) Error("set already declared"); | IF (IdentIsSet()) ident (. if (setBlock != null) Error("set already declared");
else setBlock = new PropertySetRegion(null, attributes); else { setBlock = new PropertySetRegion(null, attributes); lastBlock = setBlock; }
.) .)
| ident (. Error("set or get expected"); .) | ident (. Error("set or get expected"); .)
) )
";" ";"
(. if (lastBlock != null) { lastBlock.StartLocation = startLocation; lastBlock.EndLocation = t.EndLocation; } .)
] ]
. .

1669
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs

File diff suppressed because it is too large Load Diff

8
src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

@ -1419,12 +1419,12 @@ AccessorDecls<out PropertyGetRegion getBlock, out PropertySetRegion setBlock>
GetAccessorDecl<out PropertyGetRegion getBlock, List<AttributeSection> attributes> GetAccessorDecl<out PropertyGetRegion getBlock, List<AttributeSection> attributes>
(. Statement stmt = null; .) = (. Statement stmt = null; .) =
"Get" "Get"
(. Point startLocation = t.Location; .)
EOL EOL
Block<out stmt> Block<out stmt>
(. (. getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes); .)
getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes);
.)
"End" "Get" "End" "Get"
(. getBlock.StartLocation = startLocation; getBlock.EndLocation = t.EndLocation; .)
EOL EOL
. .
@ -1434,6 +1434,7 @@ SetAccessorDecl<out PropertySetRegion setBlock, List<AttributeSection> attribute
Statement stmt = null; List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>(); Statement stmt = null; List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>();
.) = .) =
"Set" "Set"
(. Point startLocation = t.Location; .)
[ "(" [ FormalParameterList<p> ] ")" ] [ "(" [ FormalParameterList<p> ] ")" ]
EOL EOL
Block<out stmt> Block<out stmt>
@ -1442,6 +1443,7 @@ SetAccessorDecl<out PropertySetRegion setBlock, List<AttributeSection> attribute
setBlock.Parameters = p; setBlock.Parameters = p;
.) .)
"End" "Set" "End" "Set"
(. setBlock.StartLocation = startLocation; setBlock.EndLocation = t.EndLocation; .)
EOL EOL
. .

14
src/Main/Base/Project/Src/Dom/Implementations/DefaultProperty.cs

@ -16,8 +16,8 @@ namespace ICSharpCode.SharpDevelop.Dom {
{ {
protected IRegion bodyRegion; protected IRegion bodyRegion;
protected IRegion getterRegion; IRegion getterRegion;
protected IRegion setterRegion; IRegion setterRegion;
protected IMethod getterMethod; protected IMethod getterMethod;
protected IMethod setterMethod; protected IMethod setterMethod;
@ -58,12 +58,18 @@ namespace ICSharpCode.SharpDevelop.Dom {
get { get {
return getterRegion; return getterRegion;
} }
set {
getterRegion = value;
}
} }
public IRegion SetterRegion { public IRegion SetterRegion {
get { get {
return setterRegion; return setterRegion;
} }
set {
setterRegion = value;
}
} }
public IMethod GetterMethod { public IMethod GetterMethod {
@ -80,13 +86,13 @@ namespace ICSharpCode.SharpDevelop.Dom {
public virtual bool CanGet { public virtual bool CanGet {
get { get {
return GetterRegion != null; return getterRegion != null;
} }
} }
public virtual bool CanSet { public virtual bool CanSet {
get { get {
return SetterRegion != null; return setterRegion != null;
} }
} }

15
src/Main/Base/Project/Src/Dom/LanguageProperties.cs

@ -45,6 +45,15 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
/// <summary>
/// Gets if classes can be imported (i.e. Imports System.Math)
/// </summary>
public virtual bool CanImportClasses {
get {
return false;
}
}
public virtual bool ShowInNamespaceCompletion(IClass c) public virtual bool ShowInNamespaceCompletion(IClass c)
{ {
return true; return true;
@ -84,6 +93,12 @@ namespace ICSharpCode.SharpDevelop.Dom
} }
} }
public override bool CanImportClasses {
get {
return true;
}
}
public override bool ShowInNamespaceCompletion(IClass c) public override bool ShowInNamespaceCompletion(IClass c)
{ {
foreach (IAttribute attr in c.Attributes) { foreach (IAttribute attr in c.Attributes) {

6
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs

@ -500,6 +500,12 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
DefaultClass c = GetCurrentClass(); DefaultClass c = GetCurrentClass();
DefaultProperty property = new DefaultProperty(propertyDeclaration.Name, type, ConvertModifier(propertyDeclaration.Modifier), region, bodyRegion, GetCurrentClass()); DefaultProperty property = new DefaultProperty(propertyDeclaration.Name, type, ConvertModifier(propertyDeclaration.Modifier), region, bodyRegion, GetCurrentClass());
if (propertyDeclaration.GetRegion != null) {
property.GetterRegion = GetRegion(propertyDeclaration.GetRegion.StartLocation, propertyDeclaration.GetRegion.EndLocation);
}
if (propertyDeclaration.SetRegion != null) {
property.SetterRegion = GetRegion(propertyDeclaration.SetRegion.StartLocation, propertyDeclaration.SetRegion.EndLocation);
}
property.Documentation = GetDocumentation(region.BeginLine); property.Documentation = GetDocumentation(region.BeginLine);
property.Attributes.AddRange(VisitAttributes(propertyDeclaration.Attributes)); property.Attributes.AddRange(VisitAttributes(propertyDeclaration.Attributes));
c.Properties.Add(property); c.Properties.Add(property);

81
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -494,6 +494,13 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
IField field = new DefaultField(para.ReturnType, para.Name, ModifierEnum.None, para.Region, callingClass); IField field = new DefaultField(para.ReturnType, para.Name, ModifierEnum.None, para.Region, callingClass);
return new LocalResolveResult(callingMember, field, true); return new LocalResolveResult(callingMember, field, true);
} }
if (IsSameName(identifier, "value")) {
IProperty property = callingMember as IProperty;
if (property != null && property.SetterRegion != null && property.SetterRegion.IsInside(caretLine, caretColumn)) {
IField field = new DefaultField(property.ReturnType, "value", ModifierEnum.None, property.Region, callingClass);
return new LocalResolveResult(callingMember, field, true);
}
}
} }
if (callingClass != null) { if (callingClass != null) {
IMember member = GetMember(callingClass.DefaultReturnType, identifier); IMember member = GetMember(callingClass.DefaultReturnType, identifier);
@ -519,6 +526,23 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return new NamespaceResolveResult(callingClass, callingMember, namespaceName); return new NamespaceResolveResult(callingClass, callingMember, namespaceName);
} }
if (languageProperties.CanImportClasses) {
foreach (IUsing @using in cu.Usings) {
foreach (string import in @using.Usings) {
IClass c = projectContent.GetClass(import);
if (c != null) {
IMember member = GetMember(c.DefaultReturnType, identifier);
if (member != null) {
return CreateMemberResolveResult(member);
}
ResolveResult result = ResolveMethod(c.DefaultReturnType, identifier);
if (result != null)
return result;
}
}
}
}
if (languageProperties.ImportModules) { if (languageProperties.ImportModules) {
ArrayList list = new ArrayList(); ArrayList list = new ArrayList();
AddImportedNamespaceContents(list); AddImportedNamespaceContents(list);
@ -682,6 +706,20 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
List<IMethod> methods = SearchMethod(callingClass.DefaultReturnType, memberName); List<IMethod> methods = SearchMethod(callingClass.DefaultReturnType, memberName);
if (methods.Count > 0) if (methods.Count > 0)
return methods; return methods;
if (languageProperties.CanImportClasses) {
foreach (IUsing @using in cu.Usings) {
foreach (string import in @using.Usings) {
IClass c = projectContent.GetClass(import);
if (c != null) {
methods = SearchMethod(c.DefaultReturnType, memberName);
if (methods.Count > 0)
return methods;
}
}
}
}
if (languageProperties.ImportModules) { if (languageProperties.ImportModules) {
ArrayList list = new ArrayList(); ArrayList list = new ArrayList();
AddImportedNamespaceContents(list); AddImportedNamespaceContents(list);
@ -762,47 +800,10 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
/// <remarks> /// <remarks>
/// does the dynamic lookup for the identifier /// does the dynamic lookup for the identifier
/// </remarks> /// </remarks>
public IReturnType DynamicLookup(string typeName) public IReturnType DynamicLookup(string identifier)
{ {
// try if it exists a variable named typeName ResolveResult rr = ResolveIdentifierInternal(identifier);
IReturnType variable = GetVariableType(SearchVariable(typeName)); return (rr != null) ? rr.ResolvedType : null;
if (variable != null) {
return variable;
}
if (callingClass == null) {
return null;
}
// try if typeName is a method parameter
IParameter parameter = SearchMethodParameter(typeName);
if (parameter != null) {
return parameter.ReturnType;
}
// check if typeName == value in set method of a property
if (typeName == "value") {
IProperty property = callingMember as IProperty;
if (property != null && property.SetterRegion != null && property.SetterRegion.IsInside(caretLine, caretColumn)) {
return property.ReturnType;
}
}
// try if there exists a nonstatic member named typeName
IReturnType t = SearchMember(callingClass.DefaultReturnType, typeName);
if (t != null) {
return t;
}
// try if there exists a static member in outer classes named typeName
List<IClass> classes = cu.GetOuterClasses(caretLine, caretColumn);
foreach (IClass c in classes) {
IMember member = GetMember(c.DefaultReturnType, typeName);
if (member != null && member.IsStatic) {
return member.ReturnType;
}
}
return null;
} }
IParameter SearchMethodParameter(string parameter) IParameter SearchMethodParameter(string parameter)

8
src/Main/Base/Project/Src/Dom/ReflectionLayer/ReflectionProperty.cs

@ -30,15 +30,15 @@ namespace ICSharpCode.SharpDevelop.Dom
// show the abstract layer that we have getter & setters // show the abstract layer that we have getter & setters
if (propertyInfo.CanRead) { if (propertyInfo.CanRead) {
getterRegion = new DefaultRegion(0, 0, 0, 0); GetterRegion = new DefaultRegion(0, 0, 0, 0);
} else { } else {
getterRegion = null; GetterRegion = null;
} }
if (propertyInfo.CanWrite) { if (propertyInfo.CanWrite) {
setterRegion = new DefaultRegion(0, 0, 0, 0); SetterRegion = new DefaultRegion(0, 0, 0, 0);
} else { } else {
setterRegion = null; SetterRegion = null;
} }
MethodInfo methodBase = null; MethodInfo methodBase = null;

20
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataProvider.cs

@ -21,10 +21,30 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
/// </summary> /// </summary>
public class CodeCompletionDataProvider : AbstractCompletionDataProvider public class CodeCompletionDataProvider : AbstractCompletionDataProvider
{ {
/// <summary>
/// Initialize a CodeCompletionDataProvider that reads the expression from the text area.
/// </summary>
public CodeCompletionDataProvider()
{
}
/// <summary>
/// Initalize a CodeCompletionDataProvider with a fixed expression.
/// </summary>
public CodeCompletionDataProvider(ExpressionResult expression)
{
this.fixedExpression = expression;
}
ExpressionResult fixedExpression;
protected override void GenerateCompletionData(TextArea textArea, char charTyped) protected override void GenerateCompletionData(TextArea textArea, char charTyped)
{ {
preSelection = null; preSelection = null;
if (fixedExpression.Expression == null)
GenerateCompletionData(textArea, GetExpression(textArea)); GenerateCompletionData(textArea, GetExpression(textArea));
else
GenerateCompletionData(textArea, fixedExpression);
} }
#if DEBUG #if DEBUG

196
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -89,6 +89,22 @@ namespace ICSharpCode.SharpDevelop.Tests
program); program);
} }
public T Resolve<T>(string program, string expression, int line) where T : ResolveResult
{
ResolveResult rr = Resolve(program, expression, line);
Assert.IsNotNull(rr);
Assert.IsTrue(rr is T, "result is " + typeof(T).Name);
return (T)rr;
}
public T ResolveVB<T>(string program, string expression, int line) where T : ResolveResult
{
ResolveResult rr = ResolveVB(program, expression, line);
Assert.IsNotNull(rr);
Assert.IsTrue(rr is T, "result is " + typeof(T).Name);
return (T)rr;
}
IProjectContent corLib = ProjectContentRegistry.Mscorlib; IProjectContent corLib = ProjectContentRegistry.Mscorlib;
#endregion #endregion
@ -104,14 +120,10 @@ namespace ICSharpCode.SharpDevelop.Tests
End Sub End Sub
End Class End Class
"; ";
ResolveResult result = ResolveVB(program, "a", 4); ResolveResult result = ResolveVB<LocalResolveResult>(program, "a", 4);
Assert.IsNotNull(result, "result");
Assert.IsTrue(result is LocalResolveResult, "result is LocalResolveResult");
Assert.AreEqual("System.String", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.String", result.ResolvedType.FullyQualifiedName);
result = ResolveVB(program, "b", 4); result = ResolveVB<LocalResolveResult>(program, "b", 4);
Assert.IsNotNull(result, "result");
Assert.IsTrue(result is LocalResolveResult, "result is LocalResolveResult");
Assert.AreEqual("System.String", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.String", result.ResolvedType.FullyQualifiedName);
} }
@ -127,9 +139,7 @@ End Class
End Sub End Sub
End Class End Class
"; ";
ResolveResult result = ResolveVB(program, "c", 4); ResolveResult result = ResolveVB<LocalResolveResult>(program, "c", 4);
Assert.IsNotNull(result, "result");
Assert.IsTrue(result is LocalResolveResult, "result is LocalResolveResult");
Assert.AreEqual("System.String", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.String", result.ResolvedType.FullyQualifiedName);
} }
@ -168,9 +178,7 @@ End Class
End Sub End Sub
End Module End Module
"; ";
ResolveResult result = ResolveVB(program, "t", 4); ResolveResult result = ResolveVB<LocalResolveResult>(program, "t", 4);
Assert.IsNotNull(result, "result");
Assert.IsTrue(result is LocalResolveResult, "result is LocalResolveResult");
ArrayList arr = result.GetCompletionData(lastPC); ArrayList arr = result.GetCompletionData(lastPC);
Assert.IsNotNull(arr, "arr"); Assert.IsNotNull(arr, "arr");
@ -203,8 +211,7 @@ class A {
[Test] [Test]
public void PropertyTypeConflictTest() public void PropertyTypeConflictTest()
{ {
ResolveResult result = Resolve(arrayListConflictProgram, "arrayList", 4); ResolveResult result = Resolve<MemberResolveResult>(arrayListConflictProgram, "arrayList", 4);
Assert.IsTrue(result is MemberResolveResult);
Assert.AreEqual("System.Collections.ArrayList", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.Collections.ArrayList", result.ResolvedType.FullyQualifiedName);
} }
@ -246,9 +253,7 @@ interface IInterface2 {
void Method2(); void Method2();
} }
"; ";
ResolveResult result = Resolve(program, "a", 4); ResolveResult result = Resolve<LocalResolveResult>(program, "a", 4);
Assert.IsNotNull(result, "result");
Assert.IsTrue(result is LocalResolveResult, "result is LocalResolveResult");
ArrayList arr = result.GetCompletionData(lastPC); ArrayList arr = result.GetCompletionData(lastPC);
Assert.IsNotNull(arr, "arr"); Assert.IsNotNull(arr, "arr");
bool m1 = false; bool m1 = false;
@ -306,9 +311,7 @@ interface IInterface2 {
} }
} }
"; ";
ResolveResult result = Resolve(program, "TargetMethod()", 3); ResolveResult result = Resolve<MemberResolveResult>(program, "TargetMethod()", 3);
Assert.IsNotNull(result);
Assert.IsTrue(result is MemberResolveResult);
Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName, "'TargetMethod()'"); Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName, "'TargetMethod()'");
} }
@ -325,9 +328,7 @@ interface IInterface2 {
} }
} }
"; ";
ResolveResult result = Resolve(program, "this.TargetMethod()", 3); ResolveResult result = Resolve<MemberResolveResult>(program, "this.TargetMethod()", 3);
Assert.IsNotNull(result);
Assert.IsTrue(result is MemberResolveResult);
Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName, "'this.TargetMethod()'"); Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName, "'this.TargetMethod()'");
} }
@ -343,10 +344,8 @@ class A {
public event EventHandler TestEvent; public event EventHandler TestEvent;
} }
"; ";
ResolveResult result = Resolve(program, "TestEvent(this, EventArgs.Empty)", 4); MemberResolveResult result = Resolve<MemberResolveResult>(program, "TestEvent(this, EventArgs.Empty)", 4);
Assert.IsNotNull(result); Assert.AreEqual("A.TestEvent", result.ResolvedMember.FullyQualifiedName);
Assert.IsTrue(result is MemberResolveResult);
Assert.AreEqual("A.TestEvent", (result as MemberResolveResult).ResolvedMember.FullyQualifiedName);
} }
[Test] [Test]
@ -377,10 +376,8 @@ class A {
public event EventHandler TestEvent; public event EventHandler TestEvent;
} }
"; ";
ResolveResult result = Resolve(program, "this.TestEvent(this, EventArgs.Empty)", 4); MemberResolveResult result = Resolve<MemberResolveResult>(program, "this.TestEvent(this, EventArgs.Empty)", 4);
Assert.IsNotNull(result); Assert.AreEqual("A.TestEvent", result.ResolvedMember.FullyQualifiedName);
Assert.IsTrue(result is MemberResolveResult);
Assert.AreEqual("A.TestEvent", (result as MemberResolveResult).ResolvedMember.FullyQualifiedName);
} }
[Test] [Test]
@ -394,14 +391,10 @@ class A {
} }
} }
"; ";
ResolveResult result = Resolve(program, "eh(this, new ResolveEventArgs())", 5); ResolveResult result = Resolve<LocalResolveResult>(program, "eh(this, new ResolveEventArgs())", 5);
Assert.IsNotNull(result);
Assert.IsTrue(result is LocalResolveResult);
Assert.AreEqual("eh", (result as LocalResolveResult).Field.Name); Assert.AreEqual("eh", (result as LocalResolveResult).Field.Name);
result = Resolve(program, "eh(this, new ResolveEventArgs()).GetType(\"bla\")", 5); result = Resolve<MemberResolveResult>(program, "eh(this, new ResolveEventArgs()).GetType(\"bla\")", 5);
Assert.IsNotNull(result);
Assert.IsTrue(result is MemberResolveResult);
Assert.AreEqual("System.Reflection.Module.GetType", (result as MemberResolveResult).ResolvedMember.FullyQualifiedName); Assert.AreEqual("System.Reflection.Module.GetType", (result as MemberResolveResult).ResolvedMember.FullyQualifiedName);
} }
@ -417,14 +410,10 @@ class A {
double Multiply(double a, double b) { return a * b; } double Multiply(double a, double b) { return a * b; }
} }
"; ";
ResolveResult result = Resolve(program, "Multiply(1, 1)", 3); ResolveResult result = Resolve<MemberResolveResult>(program, "Multiply(1, 1)", 3);
Assert.IsNotNull(result);
Assert.IsTrue(result is MemberResolveResult, "'Multiply(1,1)' is MemberResolveResult");
Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName, "'Multiply(1,1)'"); Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName, "'Multiply(1,1)'");
result = Resolve(program, "Multiply(1.0, 1.0)", 3); result = Resolve<MemberResolveResult>(program, "Multiply(1.0, 1.0)", 3);
Assert.IsNotNull(result);
Assert.IsTrue(result is MemberResolveResult, "'Multiply(1.0,1.0)' is MemberResolveResult");
Assert.AreEqual("System.Double", result.ResolvedType.FullyQualifiedName, "'Multiply(1.0,1.0)'"); Assert.AreEqual("System.Double", result.ResolvedType.FullyQualifiedName, "'Multiply(1.0,1.0)'");
} }
@ -442,21 +431,18 @@ class A {
A(double dblVal) {} A(double dblVal) {}
} }
"; ";
ResolveResult result = Resolve(program, "new A()", 3); MemberResolveResult result = Resolve<MemberResolveResult>(program, "new A()", 3);
Assert.IsNotNull(result); IMethod m = (IMethod)result.ResolvedMember;
IMethod m = (IMethod)((MemberResolveResult)result).ResolvedMember;
Assert.IsFalse(m.IsStatic, "new A() is static"); Assert.IsFalse(m.IsStatic, "new A() is static");
Assert.AreEqual(0, m.Parameters.Count, "new A() parameter count"); Assert.AreEqual(0, m.Parameters.Count, "new A() parameter count");
result = Resolve(program, "new A(10)", 3); result = Resolve<MemberResolveResult>(program, "new A(10)", 3);
Assert.IsNotNull(result); m = (IMethod)result.ResolvedMember;
m = (IMethod)((MemberResolveResult)result).ResolvedMember;
Assert.AreEqual(1, m.Parameters.Count, "new A(10) parameter count"); Assert.AreEqual(1, m.Parameters.Count, "new A(10) parameter count");
Assert.AreEqual("intVal", m.Parameters[0].Name, "new A(10) parameter"); Assert.AreEqual("intVal", m.Parameters[0].Name, "new A(10) parameter");
result = Resolve(program, "new A(11.1)", 3); result = Resolve<MemberResolveResult>(program, "new A(11.1)", 3);
Assert.IsNotNull(result); m = (IMethod)result.ResolvedMember;
m = (IMethod)((MemberResolveResult)result).ResolvedMember;
Assert.AreEqual(1, m.Parameters.Count, "new A(11.1) parameter count"); Assert.AreEqual(1, m.Parameters.Count, "new A(11.1) parameter count");
Assert.AreEqual("dblVal", m.Parameters[0].Name, "new A(11.1) parameter"); Assert.AreEqual("dblVal", m.Parameters[0].Name, "new A(11.1) parameter");
} }
@ -470,12 +456,28 @@ class A {
} }
} }
"; ";
ResolveResult result = Resolve(program, "new A()", 3); MemberResolveResult result = Resolve<MemberResolveResult>(program, "new A()", 3);
Assert.IsNotNull(result); IMethod m = (IMethod)result.ResolvedMember;
IMethod m = (IMethod)((MemberResolveResult)result).ResolvedMember;
Assert.IsNotNull(m); Assert.IsNotNull(m);
} }
[Test]
public void ValueInsideSetterTest()
{
string program = @"class A {
public string Property {
set {
}
}
}
";
LocalResolveResult result = Resolve<LocalResolveResult>(program, "value", 4);
Assert.AreEqual("System.String", result.ResolvedType.FullyQualifiedName);
MemberResolveResult mrr = Resolve<MemberResolveResult>(program, "value.ToString()", 4);
Assert.AreEqual("System.String.ToString", mrr.ResolvedMember.FullyQualifiedName);
}
[Test] [Test]
public void AnonymousMethodParameters() public void AnonymousMethodParameters()
{ {
@ -487,9 +489,7 @@ class A {
}; };
} } } }
"; ";
ResolveResult result = Resolve(program, "e", 5); ResolveResult result = Resolve<LocalResolveResult>(program, "e", 5);
Assert.IsNotNull(result);
Assert.IsTrue(result is LocalResolveResult);
Assert.AreEqual("System.EventArgs", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.EventArgs", result.ResolvedType.FullyQualifiedName);
} }
@ -501,9 +501,7 @@ class A {
} } } }
"; ";
ResolveResult result = Resolve(program, "int", 3); ResolveResult result = Resolve<TypeResolveResult>(program, "int", 3);
Assert.IsNotNull(result);
Assert.IsTrue(result is TypeResolveResult);
Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName);
} }
@ -516,9 +514,7 @@ class A {
End Sub End Sub
End Class End Class
"; ";
ResolveResult result = ResolveVB(program, "inTeGer", 3); ResolveResult result = ResolveVB<TypeResolveResult>(program, "inTeGer", 3);
Assert.IsNotNull(result);
Assert.IsTrue(result is TypeResolveResult);
Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName);
} }
@ -537,9 +533,7 @@ class B {
} }
"; ";
ResolveResult result = Resolve(program, "int", 4); ResolveResult result = Resolve<TypeResolveResult>(program, "int", 4);
Assert.IsNotNull(result);
Assert.IsTrue(result is TypeResolveResult);
Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.Int32", result.ResolvedType.FullyQualifiedName);
} }
@ -555,9 +549,7 @@ class B {
} }
"; ";
ResolveResult result = Resolve(program, "Activator", 5); ResolveResult result = Resolve<TypeResolveResult>(program, "Activator", 5);
Assert.IsNotNull(result);
Assert.IsTrue(result is TypeResolveResult);
Assert.AreEqual("System.Activator", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.Activator", result.ResolvedType.FullyQualifiedName);
} }
@ -572,9 +564,7 @@ class B {
} }
"; ";
ResolveResult result = Resolve(program, "System.Activator", 4); ResolveResult result = Resolve<TypeResolveResult>(program, "System.Activator", 4);
Assert.IsNotNull(result);
Assert.IsTrue(result is TypeResolveResult);
Assert.AreEqual("System.Activator", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.Activator", result.ResolvedType.FullyQualifiedName);
} }
@ -586,9 +576,7 @@ class A {
} }
"; ";
ResolveResult result = Resolve(program, "Environment.SpecialFolder", 3); ResolveResult result = Resolve<TypeResolveResult>(program, "Environment.SpecialFolder", 3);
Assert.IsNotNull(result);
Assert.IsTrue(result is TypeResolveResult);
Assert.AreEqual("System.Environment.SpecialFolder", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("System.Environment.SpecialFolder", result.ResolvedType.FullyQualifiedName);
} }
#endregion #endregion
@ -610,9 +598,7 @@ class Activator {
} }
} }
"; ";
ResolveResult result = Resolve(program, "Activator", 4); ResolveResult result = Resolve<TypeResolveResult>(program, "Activator", 4);
Assert.IsNotNull(result);
Assert.IsTrue(result is TypeResolveResult);
Assert.AreEqual("Testnamespace.Activator", result.ResolvedType.FullyQualifiedName); Assert.AreEqual("Testnamespace.Activator", result.ResolvedType.FullyQualifiedName);
} }
@ -630,8 +616,7 @@ class TestClass {
"; ";
ResolveResult result = Resolve(program, "Collections.ArrayList", 4); ResolveResult result = Resolve(program, "Collections.ArrayList", 4);
Assert.IsNull(result, "Collections.ArrayList should not resolve"); Assert.IsNull(result, "Collections.ArrayList should not resolve");
LocalResolveResult local = Resolve(program, "a", 5) as LocalResolveResult; LocalResolveResult local = Resolve<LocalResolveResult>(program, "a", 5);
Assert.IsNotNull(local, "a should resolve to a local variable");
Assert.IsNull(local.ResolvedType, "the full type should not be resolved"); Assert.IsNull(local.ResolvedType, "the full type should not be resolved");
} }
@ -647,11 +632,9 @@ Class TestClass
End Sub End Sub
End Class End Class
"; ";
TypeResolveResult type = ResolveVB(program, "Collections.ArrayList", 4) as TypeResolveResult; TypeResolveResult type = ResolveVB<TypeResolveResult>(program, "Collections.ArrayList", 4);
Assert.IsNotNull(type, "Collections.ArrayList should resolve to a type");
Assert.AreEqual("System.Collections.ArrayList", type.ResolvedClass.FullyQualifiedName, "TypeResolveResult"); Assert.AreEqual("System.Collections.ArrayList", type.ResolvedClass.FullyQualifiedName, "TypeResolveResult");
LocalResolveResult local = ResolveVB(program, "a", 5) as LocalResolveResult; LocalResolveResult local = ResolveVB<LocalResolveResult>(program, "a", 5);
Assert.IsNotNull(local, "a should resolve to a local variable");
Assert.AreEqual("System.Collections.ArrayList", local.ResolvedType.FullyQualifiedName, Assert.AreEqual("System.Collections.ArrayList", local.ResolvedType.FullyQualifiedName,
"the full type should be resolved"); "the full type should be resolved");
} }
@ -667,11 +650,10 @@ class TestClass {
} }
} }
"; ";
TypeResolveResult type = Resolve(program, "COL.ArrayList", 4) as TypeResolveResult; TypeResolveResult type = Resolve<TypeResolveResult>(program, "COL.ArrayList", 4);
Assert.IsNotNull(type, "COL.ArrayList should resolve to a type"); Assert.IsNotNull(type, "COL.ArrayList should resolve to a type");
Assert.AreEqual("System.Collections.ArrayList", type.ResolvedClass.FullyQualifiedName, "TypeResolveResult"); Assert.AreEqual("System.Collections.ArrayList", type.ResolvedClass.FullyQualifiedName, "TypeResolveResult");
LocalResolveResult local = Resolve(program, "a", 5) as LocalResolveResult; LocalResolveResult local = Resolve<LocalResolveResult>(program, "a", 5);
Assert.IsNotNull(local, "a should resolve to a local variable");
Assert.AreEqual("System.Collections.ArrayList", local.ResolvedType.FullyQualifiedName, Assert.AreEqual("System.Collections.ArrayList", local.ResolvedType.FullyQualifiedName,
"the full type should be resolved"); "the full type should be resolved");
} }
@ -681,9 +663,9 @@ class TestClass {
{ {
NamespaceResolveResult ns; NamespaceResolveResult ns;
string program = "using COL = System.Collections;\r\nclass A {\r\n\r\n}\r\n"; string program = "using COL = System.Collections;\r\nclass A {\r\n\r\n}\r\n";
ns = Resolve(program, "COL", 3) as NamespaceResolveResult; ns = Resolve<NamespaceResolveResult>(program, "COL", 3);
Assert.AreEqual("System.Collections", ns.Name, "COL"); Assert.AreEqual("System.Collections", ns.Name, "COL");
ns = Resolve(program, "COL.Generic", 3) as NamespaceResolveResult; ns = Resolve<NamespaceResolveResult>(program, "COL.Generic", 3);
Assert.AreEqual("System.Collections.Generic", ns.Name, "COL.Generic"); Assert.AreEqual("System.Collections.Generic", ns.Name, "COL.Generic");
} }
@ -698,13 +680,43 @@ class TestClass {
} }
} }
"; ";
TypeResolveResult rr = Resolve(program, "COL", 4) as TypeResolveResult; TypeResolveResult rr = Resolve<TypeResolveResult>(program, "COL", 4);
Assert.AreEqual("System.Collections.ArrayList", rr.ResolvedClass.FullyQualifiedName, "COL"); Assert.AreEqual("System.Collections.ArrayList", rr.ResolvedClass.FullyQualifiedName, "COL");
LocalResolveResult lr = Resolve(program, "a", 5) as LocalResolveResult; LocalResolveResult lr = Resolve<LocalResolveResult>(program, "a", 5);
Assert.AreEqual("System.Collections.ArrayList", lr.ResolvedType.FullyQualifiedName, "a"); Assert.AreEqual("System.Collections.ArrayList", lr.ResolvedType.FullyQualifiedName, "a");
} }
#endregion #endregion
#region Import class tests
const string importClassProgram = @"Imports System
Imports System.Math
Class TestClass
Sub Main()
End Sub
End Class
";
[Test]
public void TestImportClassMember()
{
MemberResolveResult mrr = ResolveVB<MemberResolveResult>(importClassProgram, "Pi", 6);
Assert.AreEqual("System.Math.PI", mrr.ResolvedMember.FullyQualifiedName);
mrr = ResolveVB<MemberResolveResult>(importClassProgram, "Pi.ToString()", 6);
Assert.AreEqual("System.Double.ToString", mrr.ResolvedMember.FullyQualifiedName);
}
[Test]
public void TestImportClassMethod()
{
MemberResolveResult mrr = ResolveVB<MemberResolveResult>(importClassProgram, "Sin(3)", 6);
Assert.AreEqual("System.Math.Sin", mrr.ResolvedMember.FullyQualifiedName);
mrr = ResolveVB<MemberResolveResult>(importClassProgram, "Sin(3).ToString()", 6);
Assert.AreEqual("System.Double.ToString", mrr.ResolvedMember.FullyQualifiedName);
}
#endregion
#region Visibility tests #region Visibility tests
[Test] [Test]
public void PrivateMemberTest() public void PrivateMemberTest()

8
src/SharpDevelop.WithTests.sln

@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00 Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.348 # SharpDevelop 2.0.0.352
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
@ -8,8 +8,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormDesigner", "AddIns\DisplayBindings\FormDesigner\Project\FormDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormDesigner", "AddIns\DisplayBindings\FormDesigner\Project\FormDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
@ -30,8 +28,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6
ProjectSection(SolutionItems) = postProject ProjectSection(SolutionItems) = postProject
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MbUnitPad", "AddIns\Misc\MbUnitPad\Project\MbUnitPad.csproj", "{B1CE28A0-04E8-490D-8256-E0C4D52C93C8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
@ -175,7 +171,6 @@ Global
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} {BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} {6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
@ -187,7 +182,6 @@ Global
{6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{B1CE28A0-04E8-490D-8256-E0C4D52C93C8} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {B08385CD-F0CC-488C-B4F4-EEB34B6D2688} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}

2
src/Tools/SVNChangeLogToXml/Main.cs

@ -53,7 +53,7 @@ class MainClass
xmlWriter.Formatting = Formatting.Indented; xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument(); xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("log"); xmlWriter.WriteStartElement("log");
client.Log(new string[] {".."}, Revision.Head, Revision.FromNumber(2), false, false, client.Log(new string[] {".."}, Revision.Base, Revision.FromNumber(2), false, false,
delegate(LogMessage message) { delegate(LogMessage message) {
xmlWriter.WriteStartElement("logentry"); xmlWriter.WriteStartElement("logentry");
xmlWriter.WriteAttributeString("revision", message.Revision.ToString(System.Globalization.CultureInfo.InvariantCulture)); xmlWriter.WriteAttributeString("revision", message.Revision.ToString(System.Globalization.CultureInfo.InvariantCulture));

14
src/publish.bat

@ -9,10 +9,10 @@ pushd ..\setup
call buildSetup.bat call buildSetup.bat
@IF %ERRORLEVEL% NEQ 0 EXIT @IF %ERRORLEVEL% NEQ 0 EXIT
popd popd
echo. @echo.
echo. @echo.
echo. @echo.
echo Publish.bat completed successfully. @echo Publish.bat completed successfully.
echo In the directory SharpDevelop\setup, you will find Setup.exe. @echo In the directory SharpDevelop\setup, you will find Setup.exe.
echo. @echo.
pause @pause
Loading…
Cancel
Save