Browse Source

Fixed SD2-559: Jagged arrays don't parse

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@747 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
91104f4152
  1. 36
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs
  2. 28
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs
  3. 16
      src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorStatements.cs
  4. 70
      src/Libraries/NRefactory/Project/Src/Output/CSharp/CSharpOutputVisitor.cs
  5. 8
      src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs
  6. 15
      src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs
  7. 32
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ArrayCreateExpression.cs
  8. 72
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ArrayInitializerExpression.cs
  9. 13
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/InvocationExpression.cs
  10. 11
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ObjectCreateExpression.cs
  11. 17
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/ConstructorInitializer.cs
  12. 5
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeReference.cs
  13. 17
      src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/RaiseEventStatement.cs
  14. 985
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  15. 80
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  16. 1442
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  17. 45
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  18. 15
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs
  19. 3
      src/Libraries/NRefactory/Project/Src/Parser/Visitors/IASTVisitor.cs
  20. 6
      src/Libraries/NRefactory/Test/Output/CSharp/CSharpOutputTest.cs
  21. 8
      src/Libraries/NRefactory/Test/Output/CodeDOM/InvocationExpressionTest.cs
  22. 20
      src/Libraries/NRefactory/Test/Parser/Expressions/ArrayCreateExpressionTests.cs
  23. 16
      src/Libraries/NRefactory/Test/Parser/Statements/LocalVariableDeclarationTests.cs
  24. 15
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs
  25. 12
      src/Main/Base/Project/Src/Services/RefactoringService/CodeGenerator.cs
  26. 9
      src/SharpDevelop.WithTests.sln

36
src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs

@ -48,25 +48,29 @@ namespace Grunwald.BooBinding @@ -48,25 +48,29 @@ namespace Grunwald.BooBinding
string fileName = window.ViewContent.FileName ?? window.ViewContent.UntitledName;
module = Parser.ParseModule(compileUnit, r, ApplySettings(fileName, errors, warnings), out specials);
}
if (errors.Count > 0) {
foreach (CompilerError error in errors) {
errorBuilder.AppendLine(error.ToString());
foreach (CompilerError error in errors) {
errorBuilder.AppendLine(error.ToString());
}
if (warnings.Count > 0) {
foreach (CompilerWarning warning in warnings) {
errorBuilder.AppendLine(warning.ToString());
}
} else {
if (warnings.Count > 0) {
foreach (CompilerWarning warning in warnings) {
errorBuilder.AppendLine(warning.ToString());
}
}
using (StringWriter w = new StringWriter()) {
foreach (CompilerError error in errors) {
w.WriteLine("ERROR: " + error.ToString());
}
using (StringWriter w = new StringWriter()) {
BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w);
printer.OnModule(module);
printer.Finish();
FileService.NewFile("Generated.boo", "Boo", w.ToString());
if (errors.Count > 0)
w.WriteLine();
foreach (CompilerWarning warning in warnings) {
w.WriteLine("# WARNING: " + warning.ToString());
}
}
if (errorBuilder.Length > 0) {
MessageService.ShowMessage(errorBuilder.ToString());
if (warnings.Count > 0)
w.WriteLine();
BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w);
printer.OnModule(module);
printer.Finish();
FileService.NewFile("Generated.boo", "Boo", w.ToString());
}
}
}

28
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorExpressions.cs

@ -430,31 +430,29 @@ namespace NRefactoryToBooConverter @@ -430,31 +430,29 @@ namespace NRefactoryToBooConverter
if (!arrayCreateExpression.ArrayInitializer.IsNull) {
return arrayCreateExpression.ArrayInitializer.AcceptVisitor(this, data);
}
ArrayCreationParameter acp = (ArrayCreationParameter)arrayCreateExpression.Parameters[0];
string builtInName = (acp.Expressions.Count == 1) ? "array" : "matrix";
string builtInName = (arrayCreateExpression.Arguments.Count > 1) ? "matrix" : "array";
B.MethodInvocationExpression mie = new B.MethodInvocationExpression(GetLexicalInfo(arrayCreateExpression),
MakeReferenceExpression(builtInName));
if (arrayCreateExpression.Parameters.Count > 1) {
arrayCreateExpression.CreateType.RankSpecifier = new int[arrayCreateExpression.Parameters.Count - 1];
mie.Arguments.Add(WrapTypeReference(arrayCreateExpression.CreateType));
TypeReference elementType = arrayCreateExpression.CreateType.Clone();
int[] newRank = new int[elementType.RankSpecifier.Length - 1];
for (int i = 0; i < newRank.Length; i++)
newRank[i] = elementType.RankSpecifier[i + 1];
elementType.RankSpecifier = newRank;
if (newRank.Length == 0) {
mie.Arguments.Add(MakeReferenceExpression(elementType.SystemType));
} else {
mie.Arguments.Add(MakeReferenceExpression(arrayCreateExpression.CreateType.SystemType));
mie.Arguments.Add(WrapTypeReference(elementType));
}
if (acp.Expressions.Count == 1) {
mie.Arguments.Add(ConvertExpression((Expression)acp.Expressions[0]));
if (arrayCreateExpression.Arguments.Count == 1) {
mie.Arguments.Add(ConvertExpression(arrayCreateExpression.Arguments[0]));
} else {
B.ArrayLiteralExpression dims = new B.ArrayLiteralExpression(GetLexicalInfo(acp));
ConvertExpressions(acp.Expressions, dims.Items);
B.ArrayLiteralExpression dims = new B.ArrayLiteralExpression(GetLexicalInfo(arrayCreateExpression));
ConvertExpressions(arrayCreateExpression.Arguments, dims.Items);
mie.Arguments.Add(dims);
}
return mie;
}
public object Visit(ArrayCreationParameter arrayCreationParameter, object data)
{
throw new ApplicationException("Visited ArrayCreationParameter.");
}
public object Visit(ArrayInitializerExpression aie, object data)
{
B.ArrayLiteralExpression dims = new B.ArrayLiteralExpression(GetLexicalInfo(aie));

16
src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorStatements.cs

@ -320,6 +320,8 @@ namespace NRefactoryToBooConverter @@ -320,6 +320,8 @@ namespace NRefactoryToBooConverter
// ??1 = array(Type, newBounds)
// Array.Copy(a, ??1, System.Math.Min(a.Length, ??1.Length))
// a = ??1
if (reDimStatement.IsPreserve)
AddError(reDimStatement, "Redim Preserve is not supported.");
ArrayList list = new ArrayList();
foreach (InvocationExpression o in reDimStatement.ReDimClauses) {
if (o.TypeArguments != null && o.TypeArguments.Count > 0) {
@ -337,18 +339,10 @@ namespace NRefactoryToBooConverter @@ -337,18 +339,10 @@ namespace NRefactoryToBooConverter
} else if (!r.IsArrayType) {
AddError(o, identifier.Identifier + " is not an array.");
} else {
r = r.Clone();
ArrayList bounds = new ArrayList(o.Arguments);
for (int i = 0; i < bounds.Count; i++) {
bounds[i] = Expression.AddInteger((Expression)bounds[i], 1);
ArrayCreateExpression ace = new ArrayCreateExpression(r);
foreach (Expression boundExpr in o.Arguments) {
ace.Arguments.Add(Expression.AddInteger((Expression)boundExpr, 1));
}
ArrayList acps = new ArrayList();
acps.Add(new ArrayCreationParameter(bounds));
for (int i = 1; i < r.RankSpecifier.Length; i++) {
acps.Add(new ArrayCreationParameter(r.RankSpecifier[i]));
}
r.RankSpecifier = null;
ArrayCreateExpression ace = new ArrayCreateExpression(r, acps);
ace.StartLocation = o.StartLocation;
B.Expression expr = new B.ReferenceExpression(GetLexicalInfo(identifier), identifier.Identifier);
expr = new B.BinaryExpression(GetLexicalInfo(reDimStatement), B.BinaryOperatorType.Assign, expr, ConvertExpression(ace));

70
src/Libraries/NRefactory/Project/Src/Output/CSharp/CSharpOutputVisitor.cs

@ -135,6 +135,32 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -135,6 +135,32 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
}
public object Visit(TypeReference typeReference, object data)
{
PrintTypeReferenceWithoutArray(typeReference);
if (typeReference.IsArrayType) {
PrintArrayRank(typeReference.RankSpecifier, 0);
}
return null;
}
void PrintArrayRank(int[] rankSpecifier, int startRankIndex)
{
for (int i = startRankIndex; i < rankSpecifier.Length; ++i) {
outputFormatter.PrintToken(Tokens.OpenSquareBracket);
if (this.prettyPrintOptions.SpacesWithinBrackets) {
outputFormatter.Space();
}
for (int j = 0; j < rankSpecifier[i]; ++j) {
outputFormatter.PrintToken(Tokens.Comma);
}
if (this.prettyPrintOptions.SpacesWithinBrackets) {
outputFormatter.Space();
}
outputFormatter.PrintToken(Tokens.CloseSquareBracket);
}
}
void PrintTypeReferenceWithoutArray(TypeReference typeReference)
{
if (typeReference.IsGlobal) {
outputFormatter.PrintText("global::");
@ -144,7 +170,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -144,7 +170,7 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
} else if (typeReference.SystemType == "System.Nullable" && typeReference.GenericTypes != null
&& typeReference.GenericTypes.Count == 1)
{
nodeTracker.TrackedVisit(typeReference.GenericTypes[0], data);
nodeTracker.TrackedVisit(typeReference.GenericTypes[0], null);
outputFormatter.PrintText("?");
} else {
if (typeReference.SystemType.Length > 0) {
@ -161,22 +187,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -161,22 +187,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
for (int i = 0; i < typeReference.PointerNestingLevel; ++i) {
outputFormatter.PrintToken(Tokens.Times);
}
if (typeReference.IsArrayType) {
for (int i = 0; i < typeReference.RankSpecifier.Length; ++i) {
outputFormatter.PrintToken(Tokens.OpenSquareBracket);
if (this.prettyPrintOptions.SpacesWithinBrackets) {
outputFormatter.Space();
}
for (int j = 0; j < typeReference.RankSpecifier[i]; ++j) {
outputFormatter.PrintToken(Tokens.Comma);
}
if (this.prettyPrintOptions.SpacesWithinBrackets) {
outputFormatter.Space();
}
outputFormatter.PrintToken(Tokens.CloseSquareBracket);
}
}
return null;
}
public object Visit(InnerClassTypeReference typeReference, object data)
@ -2219,20 +2229,26 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2219,20 +2229,26 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
{
outputFormatter.PrintToken(Tokens.New);
outputFormatter.Space();
nodeTracker.TrackedVisit(arrayCreateExpression.CreateType, data);
for (int i = 0; i < arrayCreateExpression.Parameters.Count; ++i) {
PrintTypeReferenceWithoutArray(arrayCreateExpression.CreateType);
if (arrayCreateExpression.Arguments.Count > 0) {
outputFormatter.PrintToken(Tokens.OpenSquareBracket);
if (this.prettyPrintOptions.SpacesWithinBrackets) {
outputFormatter.Space();
}
nodeTracker.TrackedVisit((INode)arrayCreateExpression.Parameters[i], data);
for (int i = 0; i < arrayCreateExpression.Arguments.Count; ++i) {
if (i > 0) PrintFormattedComma();
nodeTracker.TrackedVisit(arrayCreateExpression.Arguments[i], data);
}
if (this.prettyPrintOptions.SpacesWithinBrackets) {
outputFormatter.Space();
}
outputFormatter.PrintToken(Tokens.CloseSquareBracket);
PrintArrayRank(arrayCreateExpression.CreateType.RankSpecifier, 1);
} else {
PrintArrayRank(arrayCreateExpression.CreateType.RankSpecifier, 0);
}
if (!arrayCreateExpression.ArrayInitializer.IsNull) {
outputFormatter.Space();
nodeTracker.TrackedVisit(arrayCreateExpression.ArrayInitializer, data);
@ -2299,18 +2315,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2299,18 +2315,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return null;
}
public object Visit(ArrayCreationParameter arrayCreationParameter, object data)
{
if (arrayCreationParameter.IsExpressionList) {
AppendCommaSeparatedList(arrayCreationParameter.Expressions);
} else {
for (int j = 0; j < arrayCreationParameter.Dimensions; ++j) {
outputFormatter.PrintToken(Tokens.Comma);
}
}
return null;
}
#endregion
#endregion

8
src/Libraries/NRefactory/Project/Src/Output/CodeDOM/CodeDOMOutputVisitor.cs

@ -805,12 +805,8 @@ namespace ICSharpCode.NRefactory.Parser @@ -805,12 +805,8 @@ namespace ICSharpCode.NRefactory.Parser
public override object Visit(ArrayCreateExpression arrayCreateExpression, object data)
{
if (arrayCreateExpression.ArrayInitializer == null) {
if (arrayCreateExpression.Rank != null && arrayCreateExpression.Rank.Length > 0) {
return new CodeArrayCreateExpression(ConvType(arrayCreateExpression.CreateType.Type),
arrayCreateExpression.Rank[0]);
}
return new CodeArrayCreateExpression(ConvType(arrayCreateExpression.CreateType.Type),
0);
arrayCreateExpression.Arguments[0].AcceptVisitor(this, data) as CodeExpression);
}
return new CodeArrayCreateExpression(ConvType(arrayCreateExpression.CreateType.Type),
GetExpressionList(arrayCreateExpression.ArrayInitializer.CreateExpressions));
@ -955,7 +951,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -955,7 +951,7 @@ namespace ICSharpCode.NRefactory.Parser
}
}
CodeExpression[] GetExpressionList(ArrayList expressionList)
CodeExpression[] GetExpressionList(IList expressionList)
{
if (expressionList == null) {
return new CodeExpression[0];

15
src/Libraries/NRefactory/Project/Src/Output/VBNet/VBNetOutputVisitor.cs

@ -2244,9 +2244,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2244,9 +2244,9 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
outputFormatter.Space();
nodeTracker.TrackedVisit(arrayCreateExpression.CreateType, data);
for (int i = 0; i < arrayCreateExpression.Parameters.Count; ++i) {
for (int i = 0; i < arrayCreateExpression.Arguments.Count; ++i) {
outputFormatter.PrintToken(Tokens.OpenParenthesis);
nodeTracker.TrackedVisit((INode)arrayCreateExpression.Parameters[i], data);
nodeTracker.TrackedVisit((INode)arrayCreateExpression.Arguments[i], data);
outputFormatter.PrintToken(Tokens.CloseParenthesis);
}
@ -2295,17 +2295,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2295,17 +2295,6 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return null;
}
public object Visit(ArrayCreationParameter arrayCreationParameter, object data)
{
if (arrayCreationParameter.IsExpressionList) {
AppendCommaSeparatedList(arrayCreationParameter.Expressions);
} else {
for (int j = 0; j < arrayCreationParameter.Dimensions; ++j) {
outputFormatter.PrintToken(Tokens.Comma);
}
}
return null;
}
#endregion
#endregion

32
src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ArrayCreateExpression.cs

@ -7,19 +7,14 @@ @@ -7,19 +7,14 @@
using System;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
namespace ICSharpCode.NRefactory.Parser.AST
{
// TODO: Overwork array create expression.
// what is rank ?
// is ArrayCreationParameter really needed ?
public class ArrayCreateExpression : Expression
{
TypeReference createType;
// List<Expression> parameters;
ArrayList parameters;
int[] rank = new int[0];
List<Expression> arguments;
ArrayInitializerExpression arrayInitializer = null; // Array Initializer OR NULL
public TypeReference CreateType {
@ -31,21 +26,12 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -31,21 +26,12 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
}
public ArrayList Parameters {
public List<Expression> Arguments {
get {
return parameters;
return arguments;
}
set {
parameters = value == null ? new ArrayList(1) : value;
}
}
public int[] Rank {
get {
return rank;
}
set {
rank = value == null ? new int[0] : value;
arguments = value ?? new List<Expression>(1);
}
}
@ -62,7 +48,7 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -62,7 +48,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
{
}
public ArrayCreateExpression(TypeReference createType, ArrayList parameters) : this (createType, parameters, null)
public ArrayCreateExpression(TypeReference createType, List<Expression> parameters) : this (createType, parameters, null)
{
}
@ -70,10 +56,10 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -70,10 +56,10 @@ namespace ICSharpCode.NRefactory.Parser.AST
{
}
public ArrayCreateExpression(TypeReference createType, ArrayList parameters, ArrayInitializerExpression arrayInitializer)
public ArrayCreateExpression(TypeReference createType, List<Expression> parameters, ArrayInitializerExpression arrayInitializer)
{
this.CreateType = createType;
this.Parameters = parameters;
this.Arguments = parameters;
this.ArrayInitializer = arrayInitializer;
}
@ -86,7 +72,7 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -86,7 +72,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
{
return String.Format("[ArrayCreateExpression: CreateType={0}, Parameters={1}, ArrayInitializer={2}]",
createType,
GetCollectionString(parameters),
GetCollectionString(arguments),
arrayInitializer);
}
}

72
src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ArrayInitializerExpression.cs

@ -7,14 +7,13 @@ @@ -7,14 +7,13 @@
using System;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
namespace ICSharpCode.NRefactory.Parser.AST {
public class ArrayInitializerExpression : Expression
{
// List<Expression> createExpressions = new List<Expression>(1);
ArrayList createExpressions;
List<Expression> createExpressions;
public new static ArrayInitializerExpression Null {
get {
@ -24,31 +23,28 @@ namespace ICSharpCode.NRefactory.Parser.AST { @@ -24,31 +23,28 @@ namespace ICSharpCode.NRefactory.Parser.AST {
public static ArrayInitializerExpression CheckNull(ArrayInitializerExpression arrayInitializerExpression)
{
return arrayInitializerExpression == null ? NullArrayInitializerExpression.Instance : arrayInitializerExpression;
return arrayInitializerExpression ?? NullArrayInitializerExpression.Instance;
}
public ArrayList CreateExpressions {
public List<Expression> CreateExpressions {
get {
return createExpressions;
}
set {
createExpressions = value == null ? new ArrayList(1) : value;
createExpressions = value ?? new List<Expression>(1);
}
}
public ArrayInitializerExpression()
{
createExpressions = new ArrayList(1);
createExpressions = new List<Expression>(1);
}
public ArrayInitializerExpression(ArrayList createExpressions)
public ArrayInitializerExpression(List<Expression> createExpressions)
{
this.createExpressions = createExpressions;
}
public override object AcceptVisitor(IASTVisitor visitor, object data)
{
return visitor.Visit(this, data);
@ -92,58 +88,4 @@ namespace ICSharpCode.NRefactory.Parser.AST { @@ -92,58 +88,4 @@ namespace ICSharpCode.NRefactory.Parser.AST {
return String.Format("[NullArrayInitializerExpression]");
}
}
public class ArrayCreationParameter : Expression
{
// List<Expression> expressions = new List<Expression>(1);
ArrayList expressions = new ArrayList(1);
int dimensions = -1;
public bool IsExpressionList {
get {
return expressions != null;
}
}
public ArrayList Expressions {
get {
return expressions;
}
set {
expressions = value;
}
}
public int Dimensions {
get {
return dimensions;
}
set {
dimensions = value;
}
}
public ArrayCreationParameter(ArrayList expressions)
{
this.expressions = expressions;
}
public ArrayCreationParameter(int dimensions)
{
this.dimensions = dimensions;
}
public override object AcceptVisitor(IASTVisitor visitor, object data)
{
return visitor.Visit(this, data);
}
public override string ToString()
{
return String.Format("[ArrayCreationParameter: Dimensions={0}, Expressions={1}",
dimensions,
GetCollectionString(expressions));
}
}
}

13
src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/InvocationExpression.cs

@ -15,8 +15,7 @@ namespace ICSharpCode.NRefactory.Parser.AST { @@ -15,8 +15,7 @@ namespace ICSharpCode.NRefactory.Parser.AST {
public class InvocationExpression : Expression
{
Expression targetObject;
// List<Expression> arguments;
ArrayList arguments;
List<Expression> arguments;
List<TypeReference> typeArguments;
public Expression TargetObject {
@ -28,12 +27,12 @@ namespace ICSharpCode.NRefactory.Parser.AST { @@ -28,12 +27,12 @@ namespace ICSharpCode.NRefactory.Parser.AST {
}
}
public ArrayList Arguments {
public List<Expression> Arguments {
get {
return arguments;
}
set {
arguments = value == null ? new ArrayList(1) : value;
arguments = value ?? new List<Expression>(1);
}
}
@ -46,13 +45,13 @@ namespace ICSharpCode.NRefactory.Parser.AST { @@ -46,13 +45,13 @@ namespace ICSharpCode.NRefactory.Parser.AST {
}
}
public InvocationExpression(Expression targetObject, ArrayList parameters)
public InvocationExpression(Expression targetObject, List<Expression> parameters)
{
this.TargetObject = targetObject;
this.Arguments = parameters;
}
public InvocationExpression(Expression targetObject, ArrayList parameters, List<TypeReference> typeParameters)
public InvocationExpression(Expression targetObject, List<Expression> parameters, List<TypeReference> typeParameters)
{
this.TargetObject = targetObject;
this.Arguments = parameters;
@ -62,7 +61,7 @@ namespace ICSharpCode.NRefactory.Parser.AST { @@ -62,7 +61,7 @@ namespace ICSharpCode.NRefactory.Parser.AST {
public InvocationExpression(Expression targetObject)
{
this.TargetObject = targetObject;
this.arguments = new ArrayList(1);
this.arguments = new List<Expression>(1);
}
public override object AcceptVisitor(IASTVisitor visitor, object data)

11
src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/ObjectCreateExpression.cs

@ -7,15 +7,14 @@ @@ -7,15 +7,14 @@
using System;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
namespace ICSharpCode.NRefactory.Parser.AST
{
public class ObjectCreateExpression : Expression
{
TypeReference createType;
// List<Expression> parameters;
ArrayList parameters;
List<Expression> parameters;
public TypeReference CreateType {
get {
@ -26,16 +25,16 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -26,16 +25,16 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
}
public ArrayList Parameters {
public List<Expression> Parameters {
get {
return parameters;
}
set {
parameters = value == null ? new ArrayList(1) : value;
parameters = value ?? new List<Expression>(1);
}
}
public ObjectCreateExpression(TypeReference createType, ArrayList parameters)
public ObjectCreateExpression(TypeReference createType, List<Expression> parameters)
{
this.CreateType = createType;
this.Parameters = parameters;

17
src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeLevel/ConstructorInitializer.cs

@ -6,11 +6,11 @@ @@ -6,11 +6,11 @@
// </file>
using System;
using System.Collections;
using System.Diagnostics;
namespace ICSharpCode.NRefactory.Parser.AST
{
using System.Collections.Generic;
using System.Diagnostics;
namespace ICSharpCode.NRefactory.Parser.AST
{
public enum ConstructorInitializerType {
None,
Base,
@ -20,8 +20,7 @@ using System; @@ -20,8 +20,7 @@ using System;
public class ConstructorInitializer : AbstractNode, INullable
{
ConstructorInitializerType constructorInitializerType = ConstructorInitializerType.None;
// List<Expression> arguments = new List<Expression>(1);
ArrayList arguments = new ArrayList(1);
List<Expression> arguments = new List<Expression>(1);
public ConstructorInitializerType ConstructorInitializerType {
get {
@ -32,12 +31,12 @@ using System; @@ -32,12 +31,12 @@ using System;
}
}
public ArrayList Arguments {
public List<Expression> Arguments {
get {
return arguments;
}
set {
arguments = value == null ? new ArrayList(1) : value;
arguments = value ?? new List<Expression>(1);
}
}

5
src/Libraries/NRefactory/Project/Src/Parser/AST/General/TypeReference.cs

@ -285,7 +285,10 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -285,7 +285,10 @@ namespace ICSharpCode.NRefactory.Parser.AST
if (IsArrayType) {
foreach (int rank in rankSpecifier) {
b.Append('[');
b.Append(',', rank);
if (rank < 0)
b.Append('`', -rank);
else
b.Append(',', rank);
b.Append(']');
}
}

17
src/Libraries/NRefactory/Project/Src/Parser/AST/VBNet/Statements/RaiseEventStatement.cs

@ -7,15 +7,14 @@ @@ -7,15 +7,14 @@
using System;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
namespace ICSharpCode.NRefactory.Parser.AST
{
public class RaiseEventStatement : Statement
{
string eventName = "";
// List<Expression> parameters = new List<Expression>(1);
ArrayList arguments = new ArrayList(1);
List<Expression> arguments = new List<Expression>(1);
public string EventName {
get {
@ -26,7 +25,7 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -26,7 +25,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
eventName = value;
}
}
public ArrayList Arguments {
public List<Expression> Arguments {
get {
return arguments;
}
@ -36,11 +35,11 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -36,11 +35,11 @@ namespace ICSharpCode.NRefactory.Parser.AST
}
}
public RaiseEventStatement(string eventName, ArrayList parameters)
public RaiseEventStatement(string eventName, List<Expression> arguments)
{
Debug.Assert(eventName != null);
this.eventName = eventName;
this.arguments = parameters ?? new ArrayList();
this.arguments = arguments ?? new List<Expression>();
}
public override object AcceptVisitor(IASTVisitor visitor, object data)
@ -50,9 +49,9 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -50,9 +49,9 @@ namespace ICSharpCode.NRefactory.Parser.AST
public override string ToString()
{
return String.Format("[RaiseEventStatement: EventName={0}, Parameters={1}]",
EventName,
GetCollectionString(arguments));
return String.Format("[RaiseEventStatement: EventName={0}, Parameters={1}]",
EventName,
GetCollectionString(arguments));
}
}
}

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

File diff suppressed because it is too large Load Diff

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

@ -1779,7 +1779,14 @@ ArrayInitializer<out Expression outExpr> @@ -1779,7 +1779,14 @@ ArrayInitializer<out Expression outExpr>
.)
=
"{"
[ VariableInitializer<out expr> (. if (expr != null) { initializer.CreateExpressions.Add(expr); } .) { IF (NotFinalComma()) "," VariableInitializer<out expr> (. if (expr != null) { initializer.CreateExpressions.Add(expr); } .) } [ "," ] ]
[ VariableInitializer<out expr>
(. if (expr != null) { initializer.CreateExpressions.Add(expr); } .)
{ IF (NotFinalComma())
"," VariableInitializer<out expr>
(. if (expr != null) { initializer.CreateExpressions.Add(expr); } .)
}
[ "," ]
]
"}" (. outExpr = initializer; .)
.
@ -2159,47 +2166,36 @@ PrimaryExpr<out Expression pexpr> @@ -2159,47 +2166,36 @@ PrimaryExpr<out Expression pexpr>
{ "," Expr<out expr> (. if (expr != null) { indices.Add(expr); } .) }
"]" (. retExpr = new IndexerExpression(retExpr, indices); .)
) (. pexpr = retExpr; .)
| "new" NonArrayType<out type> (. ArrayList parameters = new ArrayList(); .)
/*--- delegate / object creation expression: */
/* Note: a delegate creation expression allow only a single Expr *
* not an argument list, but this is not distinguished here */
(
"(" (. ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters); .)
[ Argument<out expr> (. if (expr != null) { parameters.Add(expr); } .)
{ "," Argument<out expr> (. if (expr != null) { parameters.Add(expr); } .) }
]
")" (. pexpr = oce; .)
/*--- array creation expression: */
| (. isArrayCreation = true; ArrayCreateExpression ace = new ArrayCreateExpression(type); pexpr = ace; .)
"[" (. int dims = 0;
ArrayList rank = new ArrayList();
ArrayList parameterExpression = new ArrayList(); .)
| "new" NonArrayType<out type>
(. List<Expression> parameters = new List<Expression>(); .)
/*--- delegate / object creation expression: */
/* Note: a delegate creation expression allow only a single Expr */
/* not an argument list, but this is not distinguished here */
(
Expr<out expr> (. if (expr != null) { parameterExpression.Add(expr); } .)
{
"," Expr<out expr> (. if (expr != null) { parameterExpression.Add(expr); } .)
}
"]" (. parameters.Add(new ArrayCreationParameter(parameterExpression));
ace.Parameters = parameters; .)
{
IF (IsDims()) "[" (.dims =0;.)
{ "," (.dims++;.) } (.rank.Add(dims);
parameters.Add(new ArrayCreationParameter(dims));
.)
"]"
} (. if (rank.Count > 0) {
ace.Rank = (int[])rank.ToArray(typeof (int));
}
.)
[ ArrayInitializer<out expr> (. ace.ArrayInitializer = (ArrayInitializerExpression)expr; .) ]
| { "," (.dims++;.) } (.
parameters.Add(new ArrayCreationParameter(dims));
.)
"]" { IF (IsDims()) "[" (.dims =0;.) { "," (.dims++;.) } (.parameters.Add(new ArrayCreationParameter(dims)); .) "]" } ArrayInitializer<out expr> (. ace.ArrayInitializer = (ArrayInitializerExpression)expr; ace.Parameters = parameters; .)
"(" (. ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters); .)
[ Argument<out expr> (. if (expr != null) { parameters.Add(expr); } .)
{ "," Argument<out expr> (. if (expr != null) { parameters.Add(expr); } .) }
]
")" (. pexpr = oce; .)
| "[" /*--- array creation expression: */
(. isArrayCreation = true; ArrayCreateExpression ace = new ArrayCreateExpression(type); pexpr = ace; .)
(. int dims = 0; List<int> ranks = new List<int>(); .)
(
{ "," (. dims += 1; .) }
"]" (. ranks.Add(dims); dims = 0; .)
{ "[" { "," (. ++dims; .) } "]" (. ranks.Add(dims); dims = 0; .) }
(. ace.CreateType.RankSpecifier = ranks.ToArray(); .)
ArrayInitializer<out expr> (. ace.ArrayInitializer = (ArrayInitializerExpression)expr; .)
| Expr<out expr> (. if (expr != null) parameters.Add(expr); .)
{ "," (. dims += 1; .)
Expr<out expr> (. if (expr != null) parameters.Add(expr); .)
}
"]" (. ranks.Add(dims); ace.Arguments = parameters; dims = 0; .)
{ "[" { "," (. ++dims; .) } "]" (. ranks.Add(dims); dims = 0; .) }
(. ace.CreateType.RankSpecifier = ranks.ToArray(); .)
[ ArrayInitializer<out expr> (. ace.ArrayInitializer = (ArrayInitializerExpression)expr; .) ]
)
)
/* | ArrayInitializer<out expr> (. if (!type.IsArrayType) { Error("() or [] expected"); } pexpr = new ArrayCreateExpression(type, (ArrayInitializerExpression)expr); .)*/
)
| "typeof" "("
(
IF (NotVoidPointer()) "void" (. type = new TypeReference("void"); .)
@ -2228,12 +2224,12 @@ PrimaryExpr<out Expression pexpr> @@ -2228,12 +2224,12 @@ PrimaryExpr<out Expression pexpr>
"." ident
(. pexpr = new FieldReferenceExpression(GetTypeReferenceExpression(pexpr, typeList), t.val);.)
/*--- invocation expression: */
| "(" (. ArrayList parameters = new ArrayList(); .)
| "(" (. List<Expression> parameters = new List<Expression>(); .)
[ Argument<out expr> (. if (expr != null) {parameters.Add(expr);} .)
{ "," Argument<out expr> (. if (expr != null) {parameters.Add(expr);} .)
} ] ")" (. pexpr = new InvocationExpression(pexpr, parameters); .)
| ( IF (IsGenericFollowedBy(Tokens.OpenParenthesis)) TypeArgumentList<out typeList, false> )
"(" (. ArrayList parameters = new ArrayList(); .)
"(" (. List<Expression> parameters = new List<Expression>(); .)
[ Argument<out expr> (. if (expr != null) {parameters.Add(expr);} .)
{ "," Argument<out expr> (. if (expr != null) {parameters.Add(expr);} .)
} ] ")" (. pexpr = new InvocationExpression(pexpr, parameters, typeList); .)

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

File diff suppressed because it is too large Load Diff

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

@ -1522,7 +1522,7 @@ ConstantDeclarator<List<VariableDeclaration> constantDeclaration> @@ -1522,7 +1522,7 @@ ConstantDeclarator<List<VariableDeclaration> constantDeclaration>
VariableDeclarator<List<VariableDeclaration> fieldDeclaration>
(.
Expression expr = null;
TypeReference type = null;ArrayList rank = null;ArrayList dimension = null;
TypeReference type = null;ArrayList rank = null;List<Expression> dimension = null;
.) =
Identifier (. string name = t.val; .)
[ IF(IsSize()) ArrayInitializationModifier<out dimension> ]
@ -1544,20 +1544,14 @@ VariableDeclarator<List<VariableDeclaration> fieldDeclaration> @@ -1544,20 +1544,14 @@ VariableDeclarator<List<VariableDeclaration> fieldDeclaration>
Error("array rank only allowed one time");
} else {
for (int i = 0; i < dimension.Count; i++)
dimension[i] = Expression.AddInteger((Expression)dimension[i], 1);
ArrayList creationParameters = new ArrayList();
creationParameters.Add(new ArrayCreationParameter(dimension));
if (rank != null) {
type.RankSpecifier = (int[])rank.ToArray(typeof(int));
}
expr = new ArrayCreateExpression(type, creationParameters);
type = type.Clone();
dimension[i] = Expression.AddInteger(dimension[i], 1);
if (rank == null) {
type.RankSpecifier = new int[] { dimension.Count - 1 };
} else {
rank.Insert(0, dimension.Count - 1);
type.RankSpecifier = (int[])rank.ToArray(typeof(int));
}
expr = new ArrayCreateExpression(type, dimension);
}
} else if (type != null && rank != null) {
if(type.RankSpecifier != null) {
@ -1573,7 +1567,7 @@ VariableDeclarator<List<VariableDeclaration> fieldDeclaration> @@ -1573,7 +1567,7 @@ VariableDeclarator<List<VariableDeclaration> fieldDeclaration>
.
/* 6.8 */
ArrayInitializationModifier<out ArrayList arrayModifiers>
ArrayInitializationModifier<out List<Expression> arrayModifiers>
(.
arrayModifiers = null;
.) =
@ -1581,12 +1575,12 @@ ArrayInitializationModifier<out ArrayList arrayModifiers> @@ -1581,12 +1575,12 @@ ArrayInitializationModifier<out ArrayList arrayModifiers>
.
/* 7.5.4.3 */
InitializationRankList<out ArrayList rank>
InitializationRankList<out List<Expression> rank>
(.
rank = null;
Expression expr = null;
.) =
Expr<out expr> (. rank = new ArrayList(); if (expr != null) { rank.Add(expr); } .)
Expr<out expr> (. rank = new List<Expression>(); if (expr != null) { rank.Add(expr); } .)
{
"," Expr<out expr> (. if (expr != null) { rank.Add(expr); } .)
}
@ -1807,7 +1801,7 @@ InvocationOrMemberReferenceExpression<ref Expression pexpr> @@ -1807,7 +1801,7 @@ InvocationOrMemberReferenceExpression<ref Expression pexpr>
InvocationExpression<ref Expression pexpr>
(. List<TypeReference> typeParameters = new List<TypeReference>();
ArrayList parameters = null;
List<Expression> parameters = null;
TypeReference type; .)
=
"(" (. Point start = t.Location; .)
@ -1978,27 +1972,34 @@ ObjectCreateExpression<out Expression oce> @@ -1978,27 +1972,34 @@ ObjectCreateExpression<out Expression oce>
(.
TypeReference type = null;
Expression initializer = null;
ArrayList arguments = null;
List<Expression> arguments = null;
ArrayList dimensions = null;
oce = null;
.) =
"New" NonArrayTypeName<out type, false>
["(" [ ArgumentList<out arguments> ] ")" ]
[ ArrayInitializer<out initializer> ]
[ IF (la.kind == Tokens.OpenParenthesis)
ArrayTypeModifiers<out dimensions>
ArrayInitializer<out initializer>
| ArrayInitializer<out initializer> ]
(.
if (initializer == null) {
oce = new ObjectCreateExpression(type, arguments);
} else {
if (dimensions == null) dimensions = new ArrayList();
dimensions.Insert(0, (arguments == null) ? 0 : Math.Max(arguments.Count - 1, 0));
type.RankSpecifier = (int[])dimensions.ToArray(typeof(int));
ArrayCreateExpression ace = new ArrayCreateExpression(type, initializer as ArrayInitializerExpression);
ace.Parameters = arguments;
ace.Arguments = arguments;
oce = ace;
}
.)
.
/* 9.3.2 */
ArgumentList<out ArrayList arguments>
ArgumentList<out List<Expression> arguments>
(.
arguments = new ArrayList();
arguments = new List<Expression>();
Expression expr = null;
.) =
[
@ -2373,7 +2374,8 @@ EmbeddedStatement<out Statement statement> @@ -2373,7 +2374,8 @@ EmbeddedStatement<out Statement statement>
Statement embeddedStatement = null;
statement = null;
Expression expr = null;
string name = String.Empty;ArrayList p = null;
string name = String.Empty;
List<Expression> p = null;
.) =
"Exit" (. ExitType exitType = ExitType.None; .)
(
@ -2616,8 +2618,9 @@ EmbeddedStatement<out Statement statement> @@ -2616,8 +2618,9 @@ EmbeddedStatement<out Statement statement>
string resourcename = t.val, typeName;
Statement resourceAquisition = null, block = null;
.) "As" (
"New" Qualident<out typeName> (. ArrayList initializer = null; .) ["(" [ ArgumentList<out initializer> ] ")" ]
"New" Qualident<out typeName>
(. List<Expression> initializer = null; .)
["(" [ ArgumentList<out initializer> ] ")" ]
(.
resourceAquisition = new LocalVariableDeclaration(new VariableDeclaration(resourcename, new ArrayInitializerExpression(initializer), new TypeReference(typeName)));

15
src/Libraries/NRefactory/Project/Src/Parser/Visitors/AbstractASTVisitor.cs

@ -1010,11 +1010,11 @@ namespace ICSharpCode.NRefactory.Parser @@ -1010,11 +1010,11 @@ namespace ICSharpCode.NRefactory.Parser
{
Debug.Assert(arrayCreateExpression != null);
Debug.Assert(arrayCreateExpression.CreateType != null);
Debug.Assert(arrayCreateExpression.Parameters != null);
Debug.Assert(arrayCreateExpression.Arguments != null);
Debug.Assert(arrayCreateExpression.ArrayInitializer != null);
arrayCreateExpression.CreateType.AcceptVisitor(this, data);
foreach (Expression p in arrayCreateExpression.Parameters) {
foreach (Expression p in arrayCreateExpression.Arguments) {
Debug.Assert(p != null);
p.AcceptVisitor(this, data);
}
@ -1139,17 +1139,6 @@ namespace ICSharpCode.NRefactory.Parser @@ -1139,17 +1139,6 @@ namespace ICSharpCode.NRefactory.Parser
stackAllocExpression.Expression.AcceptVisitor(this, data);
return data;
}
public virtual object Visit(ArrayCreationParameter arrayCreationParameter, object data)
{
Debug.Assert(arrayCreationParameter != null);
Debug.Assert(arrayCreationParameter.Expressions != null);
foreach (Expression expr in arrayCreationParameter.Expressions) {
Debug.Assert(expr != null);
expr.AcceptVisitor(this, data);
}
return data;
}
#endregion
}
}

3
src/Libraries/NRefactory/Project/Src/Parser/Visitors/IASTVisitor.cs

@ -127,8 +127,5 @@ namespace ICSharpCode.NRefactory.Parser @@ -127,8 +127,5 @@ namespace ICSharpCode.NRefactory.Parser
object Visit(DirectionExpression directionExpression, object data);
object Visit(ArrayInitializerExpression arrayInitializerExpression, object data);
object Visit(ConditionalExpression conditionalExpression, object data);
object Visit(ArrayCreationParameter arrayCreationParameter, object data);
}
}

6
src/Libraries/NRefactory/Test/Output/CSharp/CSharpOutputTest.cs

@ -96,6 +96,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -96,6 +96,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
TestStatement("object[,,] a = new object[1, 2, 3];");
}
[Test]
public void JaggedArrayRank()
{
TestStatement("object[,][,,] a = new object[1, 2][,,];");
}
[Test]
public void ArrayInitializer()
{

8
src/Libraries/NRefactory/Test/Output/CodeDOM/InvocationExpressionTest.cs

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
// </file>
using System;
using System.Collections;
using System.Collections.Generic;
using System.CodeDom;
using NUnit.Framework;
using ICSharpCode.NRefactory.Parser;
@ -22,7 +22,7 @@ namespace ICSharpCode.NRefactory.Tests.Output.CodeDom.Tests @@ -22,7 +22,7 @@ namespace ICSharpCode.NRefactory.Tests.Output.CodeDom.Tests
{
// InitializeComponents();
IdentifierExpression identifier = new IdentifierExpression("InitializeComponents");
InvocationExpression invocation = new InvocationExpression(identifier, new ArrayList());
InvocationExpression invocation = new InvocationExpression(identifier, new List<Expression>());
object output = invocation.AcceptVisitor(new CodeDOMVisitor(), null);
Assert.IsTrue(output is CodeMethodInvokeExpression);
CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;
@ -35,7 +35,7 @@ namespace ICSharpCode.NRefactory.Tests.Output.CodeDom.Tests @@ -35,7 +35,7 @@ namespace ICSharpCode.NRefactory.Tests.Output.CodeDom.Tests
{
// InitializeComponents();
FieldReferenceExpression field = new FieldReferenceExpression(new ThisReferenceExpression(), "InitializeComponents");
InvocationExpression invocation = new InvocationExpression(field, new ArrayList());
InvocationExpression invocation = new InvocationExpression(field, new List<Expression>());
object output = invocation.AcceptVisitor(new CodeDOMVisitor(), null);
Assert.IsTrue(output is CodeMethodInvokeExpression);
CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;
@ -50,7 +50,7 @@ namespace ICSharpCode.NRefactory.Tests.Output.CodeDom.Tests @@ -50,7 +50,7 @@ namespace ICSharpCode.NRefactory.Tests.Output.CodeDom.Tests
FieldReferenceExpression field = new FieldReferenceExpression(new IdentifierExpression("System"), "Drawing");
field = new FieldReferenceExpression(field, "Color");
field = new FieldReferenceExpression(field, "FromArgb");
InvocationExpression invocation = new InvocationExpression(field, new ArrayList());
InvocationExpression invocation = new InvocationExpression(field, new List<Expression>());
object output = invocation.AcceptVisitor(new CodeDOMVisitor(), null);
Assert.IsTrue(output is CodeMethodInvokeExpression);
CodeMethodInvokeExpression mie = (CodeMethodInvokeExpression)output;

20
src/Libraries/NRefactory/Test/Parser/Expressions/ArrayCreateExpressionTests.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// <file>
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
@ -22,13 +22,8 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -22,13 +22,8 @@ namespace ICSharpCode.NRefactory.Tests.AST
{
ArrayCreateExpression ace = ParseUtilCSharp.ParseExpression<ArrayCreateExpression>("new int[5]");
Assert.AreEqual("int", ace.CreateType.Type);
Assert.AreEqual(1, ace.Parameters.Count);
// TODO: overwork ArrayCreateExpression.
// Assert.AreEqual(null, ace.ArrayInitializer);
//
// Assert.IsTrue(ace.Parameters[0] is PrimitiveExpression);
// PrimitiveExpression pe = (PrimitiveExpression)ace.Parameters[0];
// Assert.AreEqual(5, (int)pe.Value);
Assert.AreEqual(1, ace.Arguments.Count);
Assert.AreEqual(new int[] {0}, ace.CreateType.RankSpecifier);
}
#endregion
@ -39,13 +34,8 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -39,13 +34,8 @@ namespace ICSharpCode.NRefactory.Tests.AST
ArrayCreateExpression ace = ParseUtilVBNet.ParseExpression<ArrayCreateExpression>("new Integer() {1, 2, 3, 4}");
Assert.AreEqual("Integer", ace.CreateType.Type);
Assert.AreEqual(0, ace.Parameters.Count);
// TODO: overwork ArrayCreateExpression.
// Assert.AreEqual(null, ace.ArrayInitializer);
//
// Assert.IsTrue(ace.Parameters[0] is PrimitiveExpression);
// PrimitiveExpression pe = (PrimitiveExpression)ace.Parameters[0];
// Assert.AreEqual(5, (int)pe.Value);
Assert.AreEqual(0, ace.Arguments.Count);
Assert.AreEqual(new int[] {0}, ace.CreateType.RankSpecifier);
}
#endregion

16
src/Libraries/NRefactory/Test/Parser/Statements/LocalVariableDeclarationTests.cs

@ -231,11 +231,9 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -231,11 +231,9 @@ namespace ICSharpCode.NRefactory.Tests.AST
Assert.AreEqual("Integer", type.Type);
Assert.AreEqual(new int[] { 0 } , type.RankSpecifier);
ArrayCreateExpression ace = (ArrayCreateExpression)lvd.Variables[0].Initializer;
Assert.IsFalse(ace.CreateType.IsArrayType);
Assert.AreEqual(1, ace.Parameters.Count);
ArrayCreationParameter acp = (ArrayCreationParameter)ace.Parameters[0];
Assert.AreEqual(1, acp.Expressions.Count);
Assert.AreEqual(11, ((PrimitiveExpression)acp.Expressions[0]).Value);
Assert.AreEqual(new int[] { 0 } , ace.CreateType.RankSpecifier);
Assert.AreEqual(1, ace.Arguments.Count);
Assert.AreEqual(11, ((PrimitiveExpression)ace.Arguments[0]).Value);
}
[Test]
@ -248,11 +246,9 @@ namespace ICSharpCode.NRefactory.Tests.AST @@ -248,11 +246,9 @@ namespace ICSharpCode.NRefactory.Tests.AST
Assert.AreEqual("Integer", type.Type);
Assert.AreEqual(new int[] { 0, 0 } , type.RankSpecifier);
ArrayCreateExpression ace = (ArrayCreateExpression)lvd.Variables[0].Initializer;
Assert.AreEqual(new int[] {0}, ace.CreateType.RankSpecifier);
Assert.AreEqual(1, ace.Parameters.Count);
ArrayCreationParameter acp = (ArrayCreationParameter)ace.Parameters[0];
Assert.AreEqual(1, acp.Expressions.Count);
Assert.AreEqual(11, ((PrimitiveExpression)acp.Expressions[0]).Value);
Assert.AreEqual(new int[] {0, 0}, ace.CreateType.RankSpecifier);
Assert.AreEqual(1, ace.Arguments.Count);
Assert.AreEqual(11, ((PrimitiveExpression)ace.Arguments[0]).Value);
}
[Test]

15
src/Main/Base/Project/Src/Dom/NRefactoryResolver/TypeVisitor.cs

@ -100,7 +100,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -100,7 +100,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
return null;
}
public IMethod FindOverload(List<IMethod> methods, IReturnType[] typeParameters, ArrayList arguments, object data)
public IMethod FindOverload(List<IMethod> methods, IReturnType[] typeParameters, IList<Expression> arguments, object data)
{
if (methods.Count <= 0) {
return null;
@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
IReturnType[] types = new IReturnType[arguments.Count];
for (int i = 0; i < types.Length; ++i) {
types[i] = ((Expression)arguments[i]).AcceptVisitor(this, data) as IReturnType;
types[i] = arguments[i].AcceptVisitor(this, data) as IReturnType;
}
return MemberLookupHelper.FindOverload(methods, typeParameters, types);
}
@ -422,16 +422,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -422,16 +422,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
public override object Visit(ArrayCreateExpression arrayCreateExpression, object data)
{
IReturnType type = CreateReturnType(arrayCreateExpression.CreateType);
/*
if (arrayCreateExpression.Parameters != null && arrayCreateExpression.Parameters.Count > 0) {
int[] newRank = new int[arrayCreateExpression.Rank.Length + 1];
newRank[0] = arrayCreateExpression.Parameters.Count - 1;
Array.Copy(type.ArrayDimensions, 0, newRank, 1, type.ArrayDimensions.Length);
type.ArrayDimensions = newRank;
}
*/
return type;
return CreateReturnType(arrayCreateExpression.CreateType);
}
public override object Visit(TypeOfIsExpression typeOfIsExpression, object data)

12
src/Main/Base/Project/Src/Services/RefactoringService/CodeGenerator.cs

@ -307,14 +307,14 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -307,14 +307,14 @@ namespace ICSharpCode.SharpDevelop.Refactoring
, null);
InsertCodeAfter(property, document, ed);
ArrayList parameters = new ArrayList(2);
List<Expression> arguments = new List<Expression>(2);
if (property.IsStatic)
parameters.Add(new PrimitiveExpression(null, "null"));
arguments.Add(new PrimitiveExpression(null, "null"));
else
parameters.Add(new ThisReferenceExpression());
parameters.Add(new FieldReferenceExpression(new IdentifierExpression("EventArgs"), "Empty"));
arguments.Add(new ThisReferenceExpression());
arguments.Add(new FieldReferenceExpression(new IdentifierExpression("EventArgs"), "Empty"));
InsertCodeAtEnd(property.SetterRegion, document,
new RaiseEventStatement(name, parameters));
new RaiseEventStatement(name, arguments));
}
#endregion
@ -339,7 +339,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring @@ -339,7 +339,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
new TypeReference("System.Void"),
parameters, null);
ArrayList arguments = new ArrayList(2);
List<Expression> arguments = new List<Expression>(2);
if (e.IsStatic)
arguments.Add(new PrimitiveExpression(null, "null"));
else

9
src/SharpDevelop.WithTests.sln

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.639
# SharpDevelop 2.0.0.745
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -20,6 +20,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE @@ -20,6 +20,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
@ -264,6 +266,10 @@ Global @@ -264,6 +266,10 @@ Global
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|Any CPU.Build.0 = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Release|Any CPU.Build.0 = Release|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -282,6 +288,7 @@ Global @@ -282,6 +288,7 @@ Global
{4D0DFCB0-F6FB-469D-AA6F-C7F1D5FD5DE7} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{C9DE556D-325C-4544-B29F-16A9EB7C9830} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}

Loading…
Cancel
Save