From e37dc4b6c7e2d3581652f4d0860863847b100258 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 3 Sep 2011 13:21:21 +0200 Subject: [PATCH] Move ResolveResults to NR.Semantics --- ICSharpCode.NRefactory.Demo/CSDemo.cs | 2 + .../CSharp/Resolver/AttributeTests.cs | 1 + .../CSharp/Resolver/BinaryOperatorTests.cs | 1 + .../CSharp/Resolver/CastTests.cs | 1 + .../Resolver/ConditionalOperatorTests.cs | 1 + .../CSharp/Resolver/ConversionsTest.cs | 2 + .../CSharp/Resolver/ExtensionMethodTests.cs | 1 + .../CSharp/Resolver/InvocationTests.cs | 1 + .../CSharp/Resolver/LambdaTests.cs | 1 + .../CSharp/Resolver/LinqTests.cs | 1 + .../Resolver/LocalTypeInferenceTests.cs | 1 + .../CSharp/Resolver/NameLookupTests.cs | 2 + .../CSharp/Resolver/ObjectCreationTests.cs | 1 + .../Resolver/OverloadResolutionTests.cs | 1 + .../CSharp/Resolver/ResolveAtLocationTests.cs | 1 + .../CSharp/Resolver/ResolverTestBase.cs | 2 + .../CSharp/Resolver/TypeInferenceTests.cs | 2 + .../CSharp/Resolver/UnsafeCodeTests.cs | 1 + .../TypeSystem/TypeSystemTests.TestCase.cs | 7 +++ .../TypeSystem/TypeSystemTests.cs | 20 +++++++ .../CSharp/Analysis/ControlFlow.cs | 1 + .../Analysis/DefiniteAssignmentAnalysis.cs | 2 + .../CSharp/Parser/TypeSystemConvertVisitor.cs | 2 +- .../ContextAction/RemoveBackingStore.cs | 3 +- .../CSharp/Refactoring/RefactoringContext.cs | 1 + .../Refactoring/TypeSystemAstBuilder.cs | 24 ++++---- .../Resolver/AliasNamespaceReference.cs | 1 + .../CSharp/Resolver/CSharpAttribute.cs | 2 + .../CSharp/Resolver/CSharpResolver.cs | 2 + .../CompositeResolveVisitorNavigator.cs | 1 + .../CSharp/Resolver/ConstantValues.cs | 23 +++++++ .../CSharp/Resolver/Conversions.cs | 2 + .../Resolver/DetectSkippableNodesNavigator.cs | 1 + .../CSharp/Resolver/ErrorResolveResult.cs | 1 + .../CSharp/Resolver/FindReferencedEntities.cs | 1 + .../CSharp/Resolver/FindReferences.cs | 2 + .../Resolver/IResolveVisitorNavigator.cs | 1 + .../Resolver/ITypeOrNamespaceReference.cs | 1 + .../CSharp/Resolver/LambdaResolveResult.cs | 1 + .../CSharp/Resolver/MemberLookup.cs | 2 + .../MemberTypeOrNamespaceReference.cs | 2 + .../NodeListResolveVisitorNavigator.cs | 1 + .../CSharp/Resolver/OperatorResolveResult.cs | 60 +------------------ .../CSharp/Resolver/OverloadResolution.cs | 1 + .../CSharp/Resolver/ResolveAtLocation.cs | 1 + .../CSharp/Resolver/ResolveVisitor.cs | 2 + .../SimpleTypeOrNamespaceReference.cs | 2 + .../CSharp/Resolver/TypeInference.cs | 2 + .../ICSharpCode.NRefactory.csproj | 33 +++++----- .../AmbiguousResolveResult.cs | 2 +- .../Semantics/ArrayAccessResolveResult.cs | 50 ++++++++++++++++ .../Semantics/ArrayCreateResolveResult.cs | 60 +++++++++++++++++++ .../ByReferenceResolveResult.cs | 2 +- .../ConstantResolveResult.cs | 2 +- .../ConversionResolveResult.cs | 3 +- .../InvocationResolveResult.cs | 3 +- .../LocalResolveResult.cs | 2 +- .../MemberResolveResult.cs | 2 +- .../MethodGroupResolveResult.cs | 4 +- .../NamespaceResolveResult.cs | 2 +- .../Resolver => Semantics}/ResolveResult.cs | 2 +- .../TypeOfResolveResult.cs | 2 +- .../TypeResolveResult.cs | 2 +- .../UnknownMemberResolveResult.cs | 2 +- .../TypeSystem/IAttribute.cs | 2 + .../TypeSystem/IConstantValue.cs | 1 + .../Implementation/DefaultAttribute.cs | 2 + .../Implementation/SimpleConstantValue.cs | 1 + NRefactory.sln | 10 ++++ 69 files changed, 286 insertions(+), 98 deletions(-) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/AmbiguousResolveResult.cs (97%) create mode 100644 ICSharpCode.NRefactory/Semantics/ArrayAccessResolveResult.cs create mode 100644 ICSharpCode.NRefactory/Semantics/ArrayCreateResolveResult.cs rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/ByReferenceResolveResult.cs (97%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/ConstantResolveResult.cs (97%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/ConversionResolveResult.cs (95%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/InvocationResolveResult.cs (98%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/LocalResolveResult.cs (98%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/MemberResolveResult.cs (98%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/MethodGroupResolveResult.cs (98%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/NamespaceResolveResult.cs (97%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/ResolveResult.cs (97%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/TypeOfResolveResult.cs (97%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/TypeResolveResult.cs (97%) rename ICSharpCode.NRefactory/{CSharp/Resolver => Semantics}/UnknownMemberResolveResult.cs (98%) diff --git a/ICSharpCode.NRefactory.Demo/CSDemo.cs b/ICSharpCode.NRefactory.Demo/CSDemo.cs index a65040678a..6232abb601 100644 --- a/ICSharpCode.NRefactory.Demo/CSDemo.cs +++ b/ICSharpCode.NRefactory.Demo/CSDemo.cs @@ -28,8 +28,10 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; + using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/AttributeTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/AttributeTests.cs index 596e02327a..5f7d2a8dc7 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/AttributeTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/AttributeTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs index 773087a852..842e81ae53 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/CastTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/CastTests.cs index bfaa52662c..2c4ea461c8 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/CastTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/CastTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConditionalOperatorTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConditionalOperatorTests.cs index 6d151eebf4..8a4644aab2 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConditionalOperatorTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConditionalOperatorTests.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using ICSharpCode.NRefactory.Semantics; using NUnit.Framework; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConversionsTest.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConversionsTest.cs index e03e41689b..e2dce79c72 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConversionsTest.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ConversionsTest.cs @@ -19,6 +19,8 @@ using System; using System.Collections; using System.Collections.Generic; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs index 8a8148c9be..c803f01bf6 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/InvocationTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/InvocationTests.cs index b6b8be7016..beef31ae0e 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/InvocationTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/InvocationTests.cs @@ -18,6 +18,7 @@ using System; using System.Linq; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LambdaTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LambdaTests.cs index e3472e8b43..4718bcf49f 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LambdaTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LambdaTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem.Implementation; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs index 71e8ec078a..be363e5492 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LocalTypeInferenceTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LocalTypeInferenceTests.cs index 7aa0415413..16017e7e54 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LocalTypeInferenceTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LocalTypeInferenceTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs index 52aec9ec5b..aa6a05a329 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs @@ -19,6 +19,8 @@ using System; using System.Collections.Generic; using System.Linq; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs index 3ccad4e8cf..7219558bce 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/OverloadResolutionTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/OverloadResolutionTests.cs index 1838aba0ab..c3367a5094 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/OverloadResolutionTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/OverloadResolutionTests.cs @@ -21,6 +21,7 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolveAtLocationTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolveAtLocationTests.cs index 740bffb80e..5c6b9b88fe 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolveAtLocationTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolveAtLocationTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolverTestBase.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolverTestBase.cs index ee8de8cefc..17280cdebb 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolverTestBase.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolverTestBase.cs @@ -21,7 +21,9 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; + using ICSharpCode.NRefactory.CSharp.Parser; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/TypeInferenceTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/TypeInferenceTests.cs index 41159c7720..7afb04d737 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/TypeInferenceTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/TypeInferenceTests.cs @@ -21,6 +21,8 @@ using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using NUnit.Framework; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/UnsafeCodeTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/UnsafeCodeTests.cs index 58c4799ce2..931c52fa40 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/UnsafeCodeTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/UnsafeCodeTests.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using NUnit.Framework; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.TestCase.cs b/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.TestCase.cs index ae8a0c8c4a..d7e32a3c1e 100644 --- a/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.TestCase.cs +++ b/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.TestCase.cs @@ -120,4 +120,11 @@ namespace ICSharpCode.NRefactory.TypeSystem.TestCase [PreserveSig()] int GetNextAssembly(uint dwFlags); } + + public class ConstantTest + { + public const int Answer = 42; + + public const string NullString = null; + } } diff --git a/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.cs b/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.cs index bbf4e00eb6..8b74b7267d 100644 --- a/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.cs +++ b/ICSharpCode.NRefactory.Tests/TypeSystem/TypeSystemTests.cs @@ -20,7 +20,9 @@ using System; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; + using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem.Implementation; using ICSharpCode.NRefactory.TypeSystem.TestCase; using NUnit.Framework; @@ -456,5 +458,23 @@ namespace ICSharpCode.NRefactory.TypeSystem Assert.IsTrue(m.IsAbstract); Assert.IsFalse(m.IsVirtual); } + + [Test] + public void ConstantAnswer() + { + ITypeDefinition type = ctx.GetTypeDefinition(typeof(ConstantTest)); + IField answer = type.Fields.Single(f => f.Name == "Answer"); + Assert.IsTrue(answer.IsConst); + Assert.AreEqual(42, answer.ConstantValue.Resolve(ctx).ConstantValue); + } + + [Test] + public void ConstantNullString() + { + ITypeDefinition type = ctx.GetTypeDefinition(typeof(ConstantTest)); + IField answer = type.Fields.Single(f => f.Name == "NullString"); + Assert.IsTrue(answer.IsConst); + Assert.IsNull(answer.ConstantValue.Resolve(ctx).ConstantValue); + } } } diff --git a/ICSharpCode.NRefactory/CSharp/Analysis/ControlFlow.cs b/ICSharpCode.NRefactory/CSharp/Analysis/ControlFlow.cs index a8f8edc147..148cf2a7a2 100644 --- a/ICSharpCode.NRefactory/CSharp/Analysis/ControlFlow.cs +++ b/ICSharpCode.NRefactory/CSharp/Analysis/ControlFlow.cs @@ -23,6 +23,7 @@ using System.Linq; using System.Threading; using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Analysis diff --git a/ICSharpCode.NRefactory/CSharp/Analysis/DefiniteAssignmentAnalysis.cs b/ICSharpCode.NRefactory/CSharp/Analysis/DefiniteAssignmentAnalysis.cs index c544d2d6c1..a4c18e496c 100644 --- a/ICSharpCode.NRefactory/CSharp/Analysis/DefiniteAssignmentAnalysis.cs +++ b/ICSharpCode.NRefactory/CSharp/Analysis/DefiniteAssignmentAnalysis.cs @@ -21,7 +21,9 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; + using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using ICSharpCode.NRefactory.Utils; diff --git a/ICSharpCode.NRefactory/CSharp/Parser/TypeSystemConvertVisitor.cs b/ICSharpCode.NRefactory/CSharp/Parser/TypeSystemConvertVisitor.cs index ab96afe447..06103ada65 100644 --- a/ICSharpCode.NRefactory/CSharp/Parser/TypeSystemConvertVisitor.cs +++ b/ICSharpCode.NRefactory/CSharp/Parser/TypeSystemConvertVisitor.cs @@ -902,7 +902,7 @@ namespace ICSharpCode.NRefactory.CSharp ConstantValueBuilder b = new ConstantValueBuilder(parentTypeDefinition, parentMethodDefinition, parentUsingScope, false); ConstantExpression c = expression.AcceptVisitor(b, null); if (c == null) - return null; + return new ErrorConstantValue(targetType); PrimitiveConstantExpression pc = c as PrimitiveConstantExpression; if (pc != null && pc.Type == targetType) { // Save memory by directly using a SimpleConstantValue. diff --git a/ICSharpCode.NRefactory/CSharp/Refactoring/ContextAction/RemoveBackingStore.cs b/ICSharpCode.NRefactory/CSharp/Refactoring/ContextAction/RemoveBackingStore.cs index 6564afe403..05c6d6e533 100644 --- a/ICSharpCode.NRefactory/CSharp/Refactoring/ContextAction/RemoveBackingStore.cs +++ b/ICSharpCode.NRefactory/CSharp/Refactoring/ContextAction/RemoveBackingStore.cs @@ -24,9 +24,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System; -using ICSharpCode.NRefactory.TypeSystem; using System.Linq; using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; +using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Refactoring { diff --git a/ICSharpCode.NRefactory/CSharp/Refactoring/RefactoringContext.cs b/ICSharpCode.NRefactory/CSharp/Refactoring/RefactoringContext.cs index 6d2aa2cf79..9bea623b4c 100644 --- a/ICSharpCode.NRefactory/CSharp/Refactoring/RefactoringContext.cs +++ b/ICSharpCode.NRefactory/CSharp/Refactoring/RefactoringContext.cs @@ -26,6 +26,7 @@ using System; using System.Linq; using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; diff --git a/ICSharpCode.NRefactory/CSharp/Refactoring/TypeSystemAstBuilder.cs b/ICSharpCode.NRefactory/CSharp/Refactoring/TypeSystemAstBuilder.cs index d33b64b9b8..e00ab28fd1 100644 --- a/ICSharpCode.NRefactory/CSharp/Refactoring/TypeSystemAstBuilder.cs +++ b/ICSharpCode.NRefactory/CSharp/Refactoring/TypeSystemAstBuilder.cs @@ -5,7 +5,9 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; + using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using ICSharpCode.NRefactory.Utils; @@ -514,16 +516,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring AstNode ConvertField(IField field) { FieldDeclaration decl = new FieldDeclaration(); - Modifiers m = GetMemberModifiers(field); - if (field.IsConst) { - m &= ~Modifiers.Static; - m |= Modifiers.Const; - } else if (field.IsReadOnly) { - m |= Modifiers.Readonly; - } else if (field.IsVolatile) { - m |= Modifiers.Volatile; - } - decl.Modifiers = m; + if (ShowModifiers) { + Modifiers m = GetMemberModifiers(field); + if (field.IsConst) { + m &= ~Modifiers.Static; + m |= Modifiers.Const; + } else if (field.IsReadOnly) { + m |= Modifiers.Readonly; + } else if (field.IsVolatile) { + m |= Modifiers.Volatile; + } + decl.Modifiers = m; + } decl.ReturnType = ConvertTypeReference(field.ReturnType); Expression initializer = null; if (field.IsConst && this.ShowConstantValues) diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/AliasNamespaceReference.cs b/ICSharpCode.NRefactory/CSharp/Resolver/AliasNamespaceReference.cs index 4b59353324..92493038a6 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/AliasNamespaceReference.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/AliasNamespaceReference.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/CSharpAttribute.cs b/ICSharpCode.NRefactory/CSharp/Resolver/CSharpAttribute.cs index 2533112abc..b0a04c2023 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/CSharpAttribute.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/CSharpAttribute.cs @@ -21,6 +21,8 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/CSharpResolver.cs b/ICSharpCode.NRefactory/CSharp/Resolver/CSharpResolver.cs index bcd0b8968b..451030a954 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/CSharpResolver.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/CSharpResolver.cs @@ -24,6 +24,8 @@ using System.Globalization; using System.Linq; using System.Text; using System.Threading; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using ICSharpCode.NRefactory.Utils; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/CompositeResolveVisitorNavigator.cs b/ICSharpCode.NRefactory/CSharp/Resolver/CompositeResolveVisitorNavigator.cs index 4378267497..e810c435a7 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/CompositeResolveVisitorNavigator.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/CompositeResolveVisitorNavigator.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ConstantValues.cs b/ICSharpCode.NRefactory/CSharp/Resolver/ConstantValues.cs index 6d9a1a98ca..c7d55970eb 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ConstantValues.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/ConstantValues.cs @@ -19,7 +19,9 @@ using System; using System.Collections.Generic; using System.Linq; + using ICSharpCode.NRefactory.CSharp.Analysis; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using ICSharpCode.NRefactory.Utils; @@ -131,6 +133,27 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver.ConstantValues } } + /// + /// Used for constants that could not be converted to IConstantValue. + /// + [Serializable] + public sealed class ErrorConstantValue : Immutable, IConstantValue + { + ITypeReference type; + + public ErrorConstantValue(ITypeReference type) + { + if (type == null) + throw new ArgumentNullException("type"); + this.type = type; + } + + public ResolveResult Resolve(ITypeResolveContext context) + { + return new ErrorResolveResult(type.Resolve(context)); + } + } + /// /// Increments an integer by a fixed amount without changing the type. /// diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/Conversions.cs b/ICSharpCode.NRefactory/CSharp/Resolver/Conversions.cs index 7c1ba5ba0b..a1f8876b19 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/Conversions.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/Conversions.cs @@ -20,6 +20,8 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Utils; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/DetectSkippableNodesNavigator.cs b/ICSharpCode.NRefactory/CSharp/Resolver/DetectSkippableNodesNavigator.cs index eef0d07656..454a30bc94 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/DetectSkippableNodesNavigator.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/DetectSkippableNodesNavigator.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ErrorResolveResult.cs b/ICSharpCode.NRefactory/CSharp/Resolver/ErrorResolveResult.cs index d4e6aada06..df0a49b82e 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ErrorResolveResult.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/ErrorResolveResult.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/FindReferencedEntities.cs b/ICSharpCode.NRefactory/CSharp/Resolver/FindReferencedEntities.cs index 2f6217c8f9..38846458c5 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/FindReferencedEntities.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/FindReferencedEntities.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/FindReferences.cs b/ICSharpCode.NRefactory/CSharp/Resolver/FindReferences.cs index 8773852fed..2910bf427f 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/FindReferences.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/FindReferences.cs @@ -20,7 +20,9 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading; + using ICSharpCode.Editor; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Utils; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/IResolveVisitorNavigator.cs b/ICSharpCode.NRefactory/CSharp/Resolver/IResolveVisitorNavigator.cs index 17d3cdd23c..7a568cc41f 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/IResolveVisitorNavigator.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/IResolveVisitorNavigator.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ITypeOrNamespaceReference.cs b/ICSharpCode.NRefactory/CSharp/Resolver/ITypeOrNamespaceReference.cs index 7a0cffb1a9..f5ebaf384a 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ITypeOrNamespaceReference.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/ITypeOrNamespaceReference.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/LambdaResolveResult.cs b/ICSharpCode.NRefactory/CSharp/Resolver/LambdaResolveResult.cs index 2397c7eff8..3dfbccd79d 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/LambdaResolveResult.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/LambdaResolveResult.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/MemberLookup.cs b/ICSharpCode.NRefactory/CSharp/Resolver/MemberLookup.cs index 12c37ed13f..6d174e8c29 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/MemberLookup.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/MemberLookup.cs @@ -21,6 +21,8 @@ using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/MemberTypeOrNamespaceReference.cs b/ICSharpCode.NRefactory/CSharp/Resolver/MemberTypeOrNamespaceReference.cs index 01de15dab1..7224459e70 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/MemberTypeOrNamespaceReference.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/MemberTypeOrNamespaceReference.cs @@ -19,6 +19,8 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Utils; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/NodeListResolveVisitorNavigator.cs b/ICSharpCode.NRefactory/CSharp/Resolver/NodeListResolveVisitorNavigator.cs index 14ed911e7c..6737c10649 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/NodeListResolveVisitorNavigator.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/NodeListResolveVisitorNavigator.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/OperatorResolveResult.cs b/ICSharpCode.NRefactory/CSharp/Resolver/OperatorResolveResult.cs index f28af6ccef..524d73451c 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/OperatorResolveResult.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/OperatorResolveResult.cs @@ -19,6 +19,8 @@ using System; using System.Collections.Generic; using System.Linq; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Utils; @@ -104,62 +106,4 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver return new [] { Condition, True, False }; } } - - /// - /// Resolve result representing an array access. - /// - public class ArrayAccessResolveResult : ResolveResult - { - public readonly ResolveResult Array; - public readonly ResolveResult[] Indices; - - public ArrayAccessResolveResult(IType elementType, ResolveResult array, ResolveResult[] indices) : base(elementType) - { - if (array == null) - throw new ArgumentNullException("array"); - if (indices == null) - throw new ArgumentNullException("indices"); - this.Array = array; - this.Indices = indices; - } - - public override IEnumerable GetChildResults() - { - return new [] { Array }.Concat(Indices); - } - } - - /// - /// Resolve result representing an array creation. - /// - public class ArrayCreateResolveResult : ResolveResult - { - /// - /// Gets the size arguments. - /// - public readonly ResolveResult[] SizeArguments; - - /// - /// Gets the initializer elements. - /// This field may be null if no initializer was specified. - /// - public readonly ResolveResult[] InitializerElements; - - readonly object[] constantArray; - - public ArrayCreateResolveResult(IType arrayType, ResolveResult[] sizeArguments, ResolveResult[] initializerElements) - : base(arrayType) - { - this.SizeArguments = sizeArguments; - this.InitializerElements = initializerElements; - } - - public override IEnumerable GetChildResults() - { - if (SizeArguments != null && InitializerElements != null) - return SizeArguments.Concat(InitializerElements); - else - return SizeArguments ?? InitializerElements ?? EmptyList.Instance; - } - } } diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/OverloadResolution.cs b/ICSharpCode.NRefactory/CSharp/Resolver/OverloadResolution.cs index 0a10e40b0c..23a58c554c 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/OverloadResolution.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/OverloadResolution.cs @@ -22,6 +22,7 @@ using System.Diagnostics; using System.Linq; using System.Text; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ResolveAtLocation.cs b/ICSharpCode.NRefactory/CSharp/Resolver/ResolveAtLocation.cs index d32f45cf5e..3ceb4bd201 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ResolveAtLocation.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/ResolveAtLocation.cs @@ -18,6 +18,7 @@ using System; using System.Threading; +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ResolveVisitor.cs b/ICSharpCode.NRefactory/CSharp/Resolver/ResolveVisitor.cs index 0b3168a524..dffc6019b8 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ResolveVisitor.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/ResolveVisitor.cs @@ -22,6 +22,8 @@ using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/SimpleTypeOrNamespaceReference.cs b/ICSharpCode.NRefactory/CSharp/Resolver/SimpleTypeOrNamespaceReference.cs index 1f1510ce45..27ecef40f1 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/SimpleTypeOrNamespaceReference.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/SimpleTypeOrNamespaceReference.cs @@ -19,6 +19,8 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Utils; diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/TypeInference.cs b/ICSharpCode.NRefactory/CSharp/Resolver/TypeInference.cs index 1ce6617c5f..da462565ed 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/TypeInference.cs +++ b/ICSharpCode.NRefactory/CSharp/Resolver/TypeInference.cs @@ -20,6 +20,8 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; + +using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; diff --git a/ICSharpCode.NRefactory/ICSharpCode.NRefactory.csproj b/ICSharpCode.NRefactory/ICSharpCode.NRefactory.csproj index 0ab23d3a44..31fbee8d7e 100644 --- a/ICSharpCode.NRefactory/ICSharpCode.NRefactory.csproj +++ b/ICSharpCode.NRefactory/ICSharpCode.NRefactory.csproj @@ -105,17 +105,14 @@ + - - - - + - @@ -192,32 +189,37 @@ - - - - - - - - - - + + + + + + + + + + + + + + + @@ -424,6 +426,7 @@ + diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/AmbiguousResolveResult.cs b/ICSharpCode.NRefactory/Semantics/AmbiguousResolveResult.cs similarity index 97% rename from ICSharpCode.NRefactory/CSharp/Resolver/AmbiguousResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/AmbiguousResolveResult.cs index e8c4a20447..e2fecf1bb9 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/AmbiguousResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/AmbiguousResolveResult.cs @@ -19,7 +19,7 @@ using System; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents an ambiguous type resolve result. diff --git a/ICSharpCode.NRefactory/Semantics/ArrayAccessResolveResult.cs b/ICSharpCode.NRefactory/Semantics/ArrayAccessResolveResult.cs new file mode 100644 index 0000000000..286681eb31 --- /dev/null +++ b/ICSharpCode.NRefactory/Semantics/ArrayAccessResolveResult.cs @@ -0,0 +1,50 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; +using System.Collections.Generic; +using System.Linq; +using ICSharpCode.NRefactory.TypeSystem; +using ICSharpCode.NRefactory.Utils; + +namespace ICSharpCode.NRefactory.Semantics +{ + /// + /// Resolve result representing an array access. + /// + public class ArrayAccessResolveResult : ResolveResult + { + public readonly ResolveResult Array; + public readonly ResolveResult[] Indices; + + public ArrayAccessResolveResult(IType elementType, ResolveResult array, ResolveResult[] indices) : base(elementType) + { + if (array == null) + throw new ArgumentNullException("array"); + if (indices == null) + throw new ArgumentNullException("indices"); + this.Array = array; + this.Indices = indices; + } + + public override IEnumerable GetChildResults() + { + return new [] { Array }.Concat(Indices); + } + } +} diff --git a/ICSharpCode.NRefactory/Semantics/ArrayCreateResolveResult.cs b/ICSharpCode.NRefactory/Semantics/ArrayCreateResolveResult.cs new file mode 100644 index 0000000000..3ef6e08f64 --- /dev/null +++ b/ICSharpCode.NRefactory/Semantics/ArrayCreateResolveResult.cs @@ -0,0 +1,60 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; +using System.Collections.Generic; +using System.Linq; +using ICSharpCode.NRefactory.TypeSystem; +using ICSharpCode.NRefactory.Utils; + +namespace ICSharpCode.NRefactory.Semantics +{ + /// + /// Resolve result representing an array creation. + /// + public class ArrayCreateResolveResult : ResolveResult + { + /// + /// Gets the size arguments. + /// + public readonly ResolveResult[] SizeArguments; + + /// + /// Gets the initializer elements. + /// This field may be null if no initializer was specified. + /// + public readonly ResolveResult[] InitializerElements; + + readonly object[] constantArray; + + public ArrayCreateResolveResult(IType arrayType, ResolveResult[] sizeArguments, ResolveResult[] initializerElements) + : base(arrayType) + { + this.SizeArguments = sizeArguments; + this.InitializerElements = initializerElements; + } + + public override IEnumerable GetChildResults() + { + if (SizeArguments != null && InitializerElements != null) + return SizeArguments.Concat(InitializerElements); + else + return SizeArguments ?? InitializerElements ?? EmptyList.Instance; + } + } +} diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ByReferenceResolveResult.cs b/ICSharpCode.NRefactory/Semantics/ByReferenceResolveResult.cs similarity index 97% rename from ICSharpCode.NRefactory/CSharp/Resolver/ByReferenceResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/ByReferenceResolveResult.cs index d533f4e5b8..5522a0faf7 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ByReferenceResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/ByReferenceResolveResult.cs @@ -21,7 +21,7 @@ using System.Collections.Generic; using System.Linq; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents the resolve result of an 'ref x' or 'out x' expression. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ConstantResolveResult.cs b/ICSharpCode.NRefactory/Semantics/ConstantResolveResult.cs similarity index 97% rename from ICSharpCode.NRefactory/CSharp/Resolver/ConstantResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/ConstantResolveResult.cs index 43c03d0fa6..e4dcd1e091 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ConstantResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/ConstantResolveResult.cs @@ -19,7 +19,7 @@ using System; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// ResolveResult representing a compile-time constant. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ConversionResolveResult.cs b/ICSharpCode.NRefactory/Semantics/ConversionResolveResult.cs similarity index 95% rename from ICSharpCode.NRefactory/CSharp/Resolver/ConversionResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/ConversionResolveResult.cs index cc3b29f828..225a76c8e3 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ConversionResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/ConversionResolveResult.cs @@ -18,9 +18,10 @@ using System; using System.Collections.Generic; +using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { public class ConversionResolveResult : ResolveResult { diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/InvocationResolveResult.cs b/ICSharpCode.NRefactory/Semantics/InvocationResolveResult.cs similarity index 98% rename from ICSharpCode.NRefactory/CSharp/Resolver/InvocationResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/InvocationResolveResult.cs index b504ec6d81..2d9a679452 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/InvocationResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/InvocationResolveResult.cs @@ -20,10 +20,11 @@ using System; using System.Collections.Generic; using System.Linq; +using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents the result of a method invocation. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/LocalResolveResult.cs b/ICSharpCode.NRefactory/Semantics/LocalResolveResult.cs similarity index 98% rename from ICSharpCode.NRefactory/CSharp/Resolver/LocalResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/LocalResolveResult.cs index 57779ab2a6..58db073602 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/LocalResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/LocalResolveResult.cs @@ -19,7 +19,7 @@ using System; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents a local variable. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/MemberResolveResult.cs b/ICSharpCode.NRefactory/Semantics/MemberResolveResult.cs similarity index 98% rename from ICSharpCode.NRefactory/CSharp/Resolver/MemberResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/MemberResolveResult.cs index bd46c151fb..467e735955 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/MemberResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/MemberResolveResult.cs @@ -21,7 +21,7 @@ using System.Collections.Generic; using System.Linq; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents the result of a member invocation. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/MethodGroupResolveResult.cs b/ICSharpCode.NRefactory/Semantics/MethodGroupResolveResult.cs similarity index 98% rename from ICSharpCode.NRefactory/CSharp/Resolver/MethodGroupResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/MethodGroupResolveResult.cs index d783540153..b90f086d06 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/MethodGroupResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/MethodGroupResolveResult.cs @@ -22,9 +22,11 @@ using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; using System.Text; + +using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { public class MethodListWithDeclaringType : List { diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/NamespaceResolveResult.cs b/ICSharpCode.NRefactory/Semantics/NamespaceResolveResult.cs similarity index 97% rename from ICSharpCode.NRefactory/CSharp/Resolver/NamespaceResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/NamespaceResolveResult.cs index 01dc525a25..c6e2323260 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/NamespaceResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/NamespaceResolveResult.cs @@ -19,7 +19,7 @@ using System; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents that an expression resolved to a namespace. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/ResolveResult.cs b/ICSharpCode.NRefactory/Semantics/ResolveResult.cs similarity index 97% rename from ICSharpCode.NRefactory/CSharp/Resolver/ResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/ResolveResult.cs index 40a9931e69..40b3bc055c 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/ResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/ResolveResult.cs @@ -22,7 +22,7 @@ using System.Linq; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents the result of resolving an expression. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/TypeOfResolveResult.cs b/ICSharpCode.NRefactory/Semantics/TypeOfResolveResult.cs similarity index 97% rename from ICSharpCode.NRefactory/CSharp/Resolver/TypeOfResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/TypeOfResolveResult.cs index 23559d501d..0f1d2e50f1 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/TypeOfResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/TypeOfResolveResult.cs @@ -19,7 +19,7 @@ using System; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents the 'typeof'. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/TypeResolveResult.cs b/ICSharpCode.NRefactory/Semantics/TypeResolveResult.cs similarity index 97% rename from ICSharpCode.NRefactory/CSharp/Resolver/TypeResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/TypeResolveResult.cs index 79815d6565..b66bee211a 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/TypeResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/TypeResolveResult.cs @@ -19,7 +19,7 @@ using System; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// The resolved expression refers to a type name. diff --git a/ICSharpCode.NRefactory/CSharp/Resolver/UnknownMemberResolveResult.cs b/ICSharpCode.NRefactory/Semantics/UnknownMemberResolveResult.cs similarity index 98% rename from ICSharpCode.NRefactory/CSharp/Resolver/UnknownMemberResolveResult.cs rename to ICSharpCode.NRefactory/Semantics/UnknownMemberResolveResult.cs index cc83d8961d..1807881344 100644 --- a/ICSharpCode.NRefactory/CSharp/Resolver/UnknownMemberResolveResult.cs +++ b/ICSharpCode.NRefactory/Semantics/UnknownMemberResolveResult.cs @@ -22,7 +22,7 @@ using System.Collections.ObjectModel; using System.Linq; using ICSharpCode.NRefactory.TypeSystem; -namespace ICSharpCode.NRefactory.CSharp.Resolver +namespace ICSharpCode.NRefactory.Semantics { /// /// Represents an unknown member. diff --git a/ICSharpCode.NRefactory/TypeSystem/IAttribute.cs b/ICSharpCode.NRefactory/TypeSystem/IAttribute.cs index e7b7947a62..c6d5aa3695 100644 --- a/ICSharpCode.NRefactory/TypeSystem/IAttribute.cs +++ b/ICSharpCode.NRefactory/TypeSystem/IAttribute.cs @@ -19,7 +19,9 @@ using System; using System.Collections.Generic; using System.Diagnostics.Contracts; + using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; namespace ICSharpCode.NRefactory.TypeSystem { diff --git a/ICSharpCode.NRefactory/TypeSystem/IConstantValue.cs b/ICSharpCode.NRefactory/TypeSystem/IConstantValue.cs index e3f5b64a49..2af4f80bc6 100644 --- a/ICSharpCode.NRefactory/TypeSystem/IConstantValue.cs +++ b/ICSharpCode.NRefactory/TypeSystem/IConstantValue.cs @@ -19,6 +19,7 @@ using System; using System.Diagnostics.Contracts; using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; namespace ICSharpCode.NRefactory.TypeSystem { diff --git a/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultAttribute.cs b/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultAttribute.cs index 669bd0759b..825e0d3563 100644 --- a/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultAttribute.cs +++ b/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultAttribute.cs @@ -21,7 +21,9 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; + using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; namespace ICSharpCode.NRefactory.TypeSystem.Implementation { diff --git a/ICSharpCode.NRefactory/TypeSystem/Implementation/SimpleConstantValue.cs b/ICSharpCode.NRefactory/TypeSystem/Implementation/SimpleConstantValue.cs index 0ef06d05f8..784c186439 100644 --- a/ICSharpCode.NRefactory/TypeSystem/Implementation/SimpleConstantValue.cs +++ b/ICSharpCode.NRefactory/TypeSystem/Implementation/SimpleConstantValue.cs @@ -18,6 +18,7 @@ using System; using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.Semantics; namespace ICSharpCode.NRefactory.TypeSystem.Implementation { diff --git a/NRefactory.sln b/NRefactory.sln index 04649dd469..5b81c02160 100644 --- a/NRefactory.sln +++ b/NRefactory.sln @@ -20,6 +20,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.Demo EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Editor", "ICSharpCode.Editor\ICSharpCode.Editor.csproj", "{F054A788-B591-4561-A8BA-AE745BBEB817}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.CSharp", "ICSharpCode.NRefactory.CSharp\ICSharpCode.NRefactory.CSharp.csproj", "{53DCA265-3C3C-42F9-B647-F72BA678122B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -76,6 +78,14 @@ Global {F054A788-B591-4561-A8BA-AE745BBEB817}.Release|Any CPU.Build.0 = Release|Any CPU {F054A788-B591-4561-A8BA-AE745BBEB817}.Release|x86.ActiveCfg = Release|Any CPU {F054A788-B591-4561-A8BA-AE745BBEB817}.Release|x86.Build.0 = Release|Any CPU + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Debug|Any CPU.Build.0 = Debug|x86 + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Debug|Any CPU.ActiveCfg = Debug|x86 + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Debug|x86.Build.0 = Debug|x86 + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Debug|x86.ActiveCfg = Debug|x86 + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Release|Any CPU.Build.0 = Release|x86 + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Release|Any CPU.ActiveCfg = Release|x86 + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Release|x86.Build.0 = Release|x86 + {53DCA265-3C3C-42F9-B647-F72BA678122B}.Release|x86.ActiveCfg = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE