Browse Source

Use simpler IAstVisitor for ResolveVisitor.

newNRvisualizers
Daniel Grunwald 14 years ago
parent
commit
2f859148f0
  1. 246
      ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs

246
ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs

@ -54,7 +54,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
/// Moreover, there is the <c>ResolveAll</c> mode - it works similar to resolving mode, but will not switch back to scanning mode. /// Moreover, there is the <c>ResolveAll</c> mode - it works similar to resolving mode, but will not switch back to scanning mode.
/// The whole subtree will be resolved without notifying the navigator. /// The whole subtree will be resolved without notifying the navigator.
/// </remarks> /// </remarks>
sealed class ResolveVisitor : IAstVisitor<object, ResolveResult> sealed class ResolveVisitor : IAstVisitor<ResolveResult>
{ {
// The ResolveVisitor is also responsible for handling lambda expressions. // The ResolveVisitor is also responsible for handling lambda expressions.
@ -180,7 +180,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
var oldResolver = resolver; var oldResolver = resolver;
resolverEnabled = false; resolverEnabled = false;
StoreCurrentState(node); StoreCurrentState(node);
ResolveResult result = node.AcceptVisitor(this, null); ResolveResult result = node.AcceptVisitor(this);
if (result != null) { if (result != null) {
// If the node was resolved, store the result even though it wasn't requested. // If the node was resolved, store the result even though it wasn't requested.
// This is necessary so that Visit-methods that decide to always resolve are // This is necessary so that Visit-methods that decide to always resolve are
@ -224,7 +224,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
StoreCurrentState(node); StoreCurrentState(node);
var oldResolver = resolver; var oldResolver = resolver;
result = node.AcceptVisitor(this, null) ?? errorResult; result = node.AcceptVisitor(this) ?? errorResult;
StoreResult(node, result); StoreResult(node, result);
if (resolver != oldResolver) { if (resolver != oldResolver) {
// The node changed the resolver state: // The node changed the resolver state:
@ -537,7 +537,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Track UsingScope #region Track UsingScope
ResolveResult IAstVisitor<object, ResolveResult>.VisitCompilationUnit(CompilationUnit unit, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCompilationUnit(CompilationUnit unit)
{ {
CSharpResolver previousResolver = resolver; CSharpResolver previousResolver = resolver;
try { try {
@ -550,7 +550,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration)
{ {
CSharpResolver previousResolver = resolver; CSharpResolver previousResolver = resolver;
try { try {
@ -603,29 +603,29 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitTypeDeclaration(TypeDeclaration typeDeclaration)
{ {
return VisitTypeOrDelegate(typeDeclaration, typeDeclaration.Name, typeDeclaration.TypeParameters.Count); return VisitTypeOrDelegate(typeDeclaration, typeDeclaration.Name, typeDeclaration.TypeParameters.Count);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration)
{ {
return VisitTypeOrDelegate(delegateDeclaration, delegateDeclaration.Name, delegateDeclaration.TypeParameters.Count); return VisitTypeOrDelegate(delegateDeclaration, delegateDeclaration.Name, delegateDeclaration.TypeParameters.Count);
} }
#endregion #endregion
#region Track CurrentMember #region Track CurrentMember
ResolveResult IAstVisitor<object, ResolveResult>.VisitFieldDeclaration(FieldDeclaration fieldDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitFieldDeclaration(FieldDeclaration fieldDeclaration)
{ {
return VisitFieldOrEventDeclaration(fieldDeclaration); return VisitFieldOrEventDeclaration(fieldDeclaration);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration)
{ {
return VisitFieldOrEventDeclaration(fixedFieldDeclaration); return VisitFieldOrEventDeclaration(fixedFieldDeclaration);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitEventDeclaration(EventDeclaration eventDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitEventDeclaration(EventDeclaration eventDeclaration)
{ {
return VisitFieldOrEventDeclaration(eventDeclaration); return VisitFieldOrEventDeclaration(eventDeclaration);
} }
@ -656,7 +656,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return typeDef.GetMembers(m => m.ParsedFile == parsedFile && m.Region.IsInside(location), GetMemberOptions.IgnoreInheritedMembers | GetMemberOptions.ReturnMemberDefinitions).FirstOrDefault(); return typeDef.GetMembers(m => m.ParsedFile == parsedFile && m.Region.IsInside(location), GetMemberOptions.IgnoreInheritedMembers | GetMemberOptions.ReturnMemberDefinitions).FirstOrDefault();
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitVariableInitializer(VariableInitializer variableInitializer, object data) ResolveResult IAstVisitor<ResolveResult>.VisitVariableInitializer(VariableInitializer variableInitializer)
{ {
// Within the variable initializer, the newly declared variable is not yet available: // Within the variable initializer, the newly declared variable is not yet available:
var resolverWithVariable = resolver; var resolverWithVariable = resolver;
@ -720,7 +720,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer, object data) ResolveResult IAstVisitor<ResolveResult>.VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer)
{ {
if (resolverEnabled) { if (resolverEnabled) {
ResolveResult result = errorResult; ResolveResult result = errorResult;
@ -752,22 +752,22 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitMethodDeclaration(MethodDeclaration methodDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitMethodDeclaration(MethodDeclaration methodDeclaration)
{ {
return VisitMethodMember(methodDeclaration); return VisitMethodMember(methodDeclaration);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration)
{ {
return VisitMethodMember(operatorDeclaration); return VisitMethodMember(operatorDeclaration);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration)
{ {
return VisitMethodMember(constructorDeclaration); return VisitMethodMember(constructorDeclaration);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration)
{ {
return VisitMethodMember(destructorDeclaration); return VisitMethodMember(destructorDeclaration);
} }
@ -798,17 +798,17 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{ {
return VisitPropertyMember(propertyDeclaration); return VisitPropertyMember(propertyDeclaration);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
{ {
return VisitPropertyMember(indexerDeclaration); return VisitPropertyMember(indexerDeclaration);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration)
{ {
CSharpResolver oldResolver = resolver; CSharpResolver oldResolver = resolver;
try { try {
@ -831,7 +831,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitParameterDeclaration(ParameterDeclaration parameterDeclaration)
{ {
ScanChildren(parameterDeclaration); ScanChildren(parameterDeclaration);
if (resolverEnabled) { if (resolverEnabled) {
@ -862,7 +862,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration)
{ {
ScanChildren(typeParameterDeclaration); ScanChildren(typeParameterDeclaration);
if (resolverEnabled) { if (resolverEnabled) {
@ -888,7 +888,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration)
{ {
CSharpResolver oldResolver = resolver; CSharpResolver oldResolver = resolver;
try { try {
@ -917,7 +917,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Track CheckForOverflow #region Track CheckForOverflow
ResolveResult IAstVisitor<object, ResolveResult>.VisitCheckedExpression(CheckedExpression checkedExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCheckedExpression(CheckedExpression checkedExpression)
{ {
CSharpResolver oldResolver = resolver; CSharpResolver oldResolver = resolver;
try { try {
@ -933,7 +933,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUncheckedExpression(UncheckedExpression uncheckedExpression)
{ {
CSharpResolver oldResolver = resolver; CSharpResolver oldResolver = resolver;
try { try {
@ -949,7 +949,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitCheckedStatement(CheckedStatement checkedStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCheckedStatement(CheckedStatement checkedStatement)
{ {
CSharpResolver oldResolver = resolver; CSharpResolver oldResolver = resolver;
try { try {
@ -961,7 +961,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUncheckedStatement(UncheckedStatement uncheckedStatement)
{ {
CSharpResolver oldResolver = resolver; CSharpResolver oldResolver = resolver;
try { try {
@ -995,7 +995,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression)
{ {
// 7.6.10.6 Anonymous object creation expressions // 7.6.10.6 Anonymous object creation expressions
List<IUnresolvedProperty> properties = new List<IUnresolvedProperty>(); List<IUnresolvedProperty> properties = new List<IUnresolvedProperty>();
@ -1032,7 +1032,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Visit Expressions #region Visit Expressions
ResolveResult IAstVisitor<object, ResolveResult>.VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression)
{ {
int dimensions = arrayCreateExpression.Arguments.Count; int dimensions = arrayCreateExpression.Arguments.Count;
ResolveResult[] sizeArguments; ResolveResult[] sizeArguments;
@ -1107,14 +1107,14 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression)
{ {
// Array initializers are handled by their parent expression. // Array initializers are handled by their parent expression.
ScanChildren(arrayInitializerExpression); ScanChildren(arrayInitializerExpression);
return errorResult; return errorResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitAsExpression(AsExpression asExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitAsExpression(AsExpression asExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
Scan(asExpression.Expression); Scan(asExpression.Expression);
@ -1125,7 +1125,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitAssignmentExpression(AssignmentExpression assignmentExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
Expression left = assignmentExpression.Left; Expression left = assignmentExpression.Left;
@ -1141,7 +1141,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
return resolver.ResolveBaseReference(); return resolver.ResolveBaseReference();
@ -1151,7 +1151,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
Expression left = binaryOperatorExpression.Left; Expression left = binaryOperatorExpression.Left;
@ -1183,7 +1183,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return rr; return rr;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitCastExpression(CastExpression castExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCastExpression(CastExpression castExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
IType targetType = ResolveType(castExpression.Type); IType targetType = ResolveType(castExpression.Type);
@ -1197,7 +1197,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitConditionalExpression(ConditionalExpression conditionalExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitConditionalExpression(ConditionalExpression conditionalExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
Expression condition = conditionalExpression.Condition; Expression condition = conditionalExpression.Condition;
@ -1218,7 +1218,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
return resolver.ResolveDefaultValue(ResolveType(defaultValueExpression.Type)); return resolver.ResolveDefaultValue(ResolveType(defaultValueExpression.Type));
@ -1228,7 +1228,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitDirectionExpression(DirectionExpression directionExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitDirectionExpression(DirectionExpression directionExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
ResolveResult rr = Resolve(directionExpression.Expression); ResolveResult rr = Resolve(directionExpression.Expression);
@ -1239,12 +1239,12 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitEmptyExpression(EmptyExpression emptyExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitEmptyExpression(EmptyExpression emptyExpression)
{ {
return errorResult; return errorResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitIndexerExpression(IndexerExpression indexerExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitIndexerExpression(IndexerExpression indexerExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
Expression target = indexerExpression.Target; Expression target = indexerExpression.Target;
@ -1265,14 +1265,14 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitIsExpression(IsExpression isExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitIsExpression(IsExpression isExpression)
{ {
ScanChildren(isExpression); ScanChildren(isExpression);
return new ResolveResult(resolver.Compilation.FindType(KnownTypeCode.Boolean)); return new ResolveResult(resolver.Compilation.FindType(KnownTypeCode.Boolean));
} }
// NamedArgumentExpression is "identifier: Expression" // NamedArgumentExpression is "identifier: Expression"
ResolveResult IAstVisitor<object, ResolveResult>.VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression)
{ {
// The parent expression takes care of handling NamedArgumentExpressions // The parent expression takes care of handling NamedArgumentExpressions
// by calling GetArguments(). // by calling GetArguments().
@ -1283,7 +1283,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
// NamedExpression is "identifier = Expression" in object initializers and attributes // NamedExpression is "identifier = Expression" in object initializers and attributes
ResolveResult IAstVisitor<object, ResolveResult>.VisitNamedExpression(NamedExpression namedExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitNamedExpression(NamedExpression namedExpression)
{ {
Expression rhs = namedExpression.Expression; Expression rhs = namedExpression.Expression;
if (rhs is ArrayInitializerExpression) { if (rhs is ArrayInitializerExpression) {
@ -1302,12 +1302,12 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression)
{ {
return resolver.ResolvePrimitive(null); return resolver.ResolvePrimitive(null);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression)
{ {
if (resolverEnabled || !objectCreateExpression.Initializer.IsNull) { if (resolverEnabled || !objectCreateExpression.Initializer.IsNull) {
IType type = ResolveType(objectCreateExpression.Type); IType type = ResolveType(objectCreateExpression.Type);
@ -1375,7 +1375,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
StoreResult(initializer, voidResult); StoreResult(initializer, voidResult);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
return Resolve(parenthesizedExpression.Expression); return Resolve(parenthesizedExpression.Expression);
@ -1385,7 +1385,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
ResolveResult target = Resolve(pointerReferenceExpression.Target); ResolveResult target = Resolve(pointerReferenceExpression.Target);
@ -1403,28 +1403,28 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitPrimitiveExpression(PrimitiveExpression primitiveExpression)
{ {
return resolver.ResolvePrimitive(primitiveExpression.Value); return resolver.ResolvePrimitive(primitiveExpression.Value);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitSizeOfExpression(SizeOfExpression sizeOfExpression)
{ {
return resolver.ResolveSizeOf(ResolveType(sizeOfExpression.Type)); return resolver.ResolveSizeOf(ResolveType(sizeOfExpression.Type));
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitStackAllocExpression(StackAllocExpression stackAllocExpression)
{ {
ResolveAndProcessConversion(stackAllocExpression.CountExpression, resolver.Compilation.FindType(KnownTypeCode.Int32)); ResolveAndProcessConversion(stackAllocExpression.CountExpression, resolver.Compilation.FindType(KnownTypeCode.Int32));
return new ResolveResult(new PointerType(ResolveType(stackAllocExpression.Type))); return new ResolveResult(new PointerType(ResolveType(stackAllocExpression.Type)));
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression)
{ {
return resolver.ResolveThisReference(); return resolver.ResolveThisReference();
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitTypeOfExpression(TypeOfExpression typeOfExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitTypeOfExpression(TypeOfExpression typeOfExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
return resolver.ResolveTypeOf(ResolveType(typeOfExpression.Type)); return resolver.ResolveTypeOf(ResolveType(typeOfExpression.Type));
@ -1434,7 +1434,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
return Resolve(typeReferenceExpression.Type); return Resolve(typeReferenceExpression.Type);
@ -1444,7 +1444,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression)
{ {
if (resolverEnabled) { if (resolverEnabled) {
Expression expr = unaryOperatorExpression.Expression; Expression expr = unaryOperatorExpression.Expression;
@ -1475,7 +1475,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression)
{ {
ScanChildren(undocumentedExpression); ScanChildren(undocumentedExpression);
IType resultType; IType resultType;
@ -1558,7 +1558,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return mrr != null && mrr.Member.IsStatic; return mrr != null && mrr.Member.IsStatic;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitIdentifierExpression(IdentifierExpression identifierExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitIdentifierExpression(IdentifierExpression identifierExpression)
{ {
// Note: this method is not called when it occurs in a situation where an ambiguity between // Note: this method is not called when it occurs in a situation where an ambiguity between
// simple names and type names might occur. // simple names and type names might occur.
@ -1572,7 +1572,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression)
{ {
// target = Resolve(identifierExpression = memberReferenceExpression.Target) // target = Resolve(identifierExpression = memberReferenceExpression.Target)
// trr = ResolveType(identifierExpression) // trr = ResolveType(identifierExpression)
@ -1617,7 +1617,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
IsTargetOfInvocation(memberReferenceExpression)); IsTargetOfInvocation(memberReferenceExpression));
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitInvocationExpression(InvocationExpression invocationExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitInvocationExpression(InvocationExpression invocationExpression)
{ {
// rr = Resolve(invocationExpression) // rr = Resolve(invocationExpression)
// target = Resolve(memberReferenceExpression = invocationExpression.Target) // target = Resolve(memberReferenceExpression = invocationExpression.Target)
@ -1674,7 +1674,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Lamdbas / Anonymous Functions #region Lamdbas / Anonymous Functions
ResolveResult IAstVisitor<object, ResolveResult>.VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression)
{ {
return HandleExplicitlyTypedLambda( return HandleExplicitlyTypedLambda(
anonymousMethodExpression.Parameters, anonymousMethodExpression.Body, anonymousMethodExpression.Parameters, anonymousMethodExpression.Body,
@ -1683,7 +1683,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
isAsync: anonymousMethodExpression.IsAsync); isAsync: anonymousMethodExpression.IsAsync);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitLambdaExpression(LambdaExpression lambdaExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitLambdaExpression(LambdaExpression lambdaExpression)
{ {
bool isExplicitlyTyped = false; bool isExplicitlyTyped = false;
bool isImplicitlyTyped = false; bool isImplicitlyTyped = false;
@ -2304,7 +2304,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
Scan(body); Scan(body);
AnalyzeLambdaVisitor alv = new AnalyzeLambdaVisitor(); AnalyzeLambdaVisitor alv = new AnalyzeLambdaVisitor();
body.AcceptVisitor(alv, null); body.AcceptVisitor(alv);
isValidAsVoidMethod = (alv.ReturnExpressions.Count == 0); isValidAsVoidMethod = (alv.ReturnExpressions.Count == 0);
if (alv.HasVoidReturnStatements) { if (alv.HasVoidReturnStatements) {
returnExpressions = EmptyList<Expression>.Instance; returnExpressions = EmptyList<Expression>.Instance;
@ -2411,12 +2411,12 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return false; return false;
} }
sealed class AnalyzeLambdaVisitor : DepthFirstAstVisitor<object, object> sealed class AnalyzeLambdaVisitor : DepthFirstAstVisitor
{ {
public bool HasVoidReturnStatements; public bool HasVoidReturnStatements;
public List<Expression> ReturnExpressions = new List<Expression>(); public List<Expression> ReturnExpressions = new List<Expression>();
public override object VisitReturnStatement(ReturnStatement returnStatement, object data) public override void VisitReturnStatement(ReturnStatement returnStatement)
{ {
Expression expr = returnStatement.Expression; Expression expr = returnStatement.Expression;
if (expr.IsNull) { if (expr.IsNull) {
@ -2424,25 +2424,23 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} else { } else {
ReturnExpressions.Add(expr); ReturnExpressions.Add(expr);
} }
return null;
} }
public override object VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, object data) public override void VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression)
{ {
// don't go into nested lambdas // don't go into nested lambdas
return null;
} }
public override object VisitLambdaExpression(LambdaExpression lambdaExpression, object data) public override void VisitLambdaExpression(LambdaExpression lambdaExpression)
{ {
return null; // don't go into nested lambdas
} }
} }
#endregion #endregion
#endregion #endregion
#region Local Variable Scopes (Block Statements) #region Local Variable Scopes (Block Statements)
ResolveResult IAstVisitor<object, ResolveResult>.VisitBlockStatement(BlockStatement blockStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitBlockStatement(BlockStatement blockStatement)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
ScanChildren(blockStatement); ScanChildren(blockStatement);
@ -2450,7 +2448,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitUsingStatement(UsingStatement usingStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUsingStatement(UsingStatement usingStatement)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
if (resolverEnabled) { if (resolverEnabled) {
@ -2468,7 +2466,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return resolverEnabled ? voidResult : null; return resolverEnabled ? voidResult : null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitFixedStatement(FixedStatement fixedStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitFixedStatement(FixedStatement fixedStatement)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
IType type = ResolveType(fixedStatement.Type); IType type = ResolveType(fixedStatement.Type);
@ -2481,7 +2479,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitForeachStatement(ForeachStatement foreachStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitForeachStatement(ForeachStatement foreachStatement)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
IVariable v; IVariable v;
@ -2506,7 +2504,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitSwitchStatement(SwitchStatement switchStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitSwitchStatement(SwitchStatement switchStatement)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
ScanChildren(switchStatement); ScanChildren(switchStatement);
@ -2514,7 +2512,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitCatchClause(CatchClause catchClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCatchClause(CatchClause catchClause)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
if (string.IsNullOrEmpty(catchClause.VariableName)) { if (string.IsNullOrEmpty(catchClause.VariableName)) {
@ -2533,7 +2531,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region VariableDeclarationStatement #region VariableDeclarationStatement
ResolveResult IAstVisitor<object, ResolveResult>.VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement)
{ {
bool isConst = (variableDeclarationStatement.Modifiers & Modifiers.Const) != 0; bool isConst = (variableDeclarationStatement.Modifiers & Modifiers.Const) != 0;
if (!isConst && IsVar(variableDeclarationStatement.Type) && variableDeclarationStatement.Variables.Count == 1) { if (!isConst && IsVar(variableDeclarationStatement.Type) && variableDeclarationStatement.Variables.Count == 1) {
@ -2563,7 +2561,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Condition Statements #region Condition Statements
ResolveResult IAstVisitor<object, ResolveResult>.VisitForStatement(ForStatement forStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitForStatement(ForStatement forStatement)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
var result = HandleConditionStatement(forStatement); var result = HandleConditionStatement(forStatement);
@ -2571,17 +2569,17 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return result; return result;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitIfElseStatement(IfElseStatement ifElseStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitIfElseStatement(IfElseStatement ifElseStatement)
{ {
return HandleConditionStatement(ifElseStatement); return HandleConditionStatement(ifElseStatement);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitWhileStatement(WhileStatement whileStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitWhileStatement(WhileStatement whileStatement)
{ {
return HandleConditionStatement(whileStatement); return HandleConditionStatement(whileStatement);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitDoWhileStatement(DoWhileStatement doWhileStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitDoWhileStatement(DoWhileStatement doWhileStatement)
{ {
return HandleConditionStatement(doWhileStatement); return HandleConditionStatement(doWhileStatement);
} }
@ -2609,7 +2607,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Return Statements #region Return Statements
ResolveResult IAstVisitor<object, ResolveResult>.VisitReturnStatement(ReturnStatement returnStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitReturnStatement(ReturnStatement returnStatement)
{ {
if (resolverEnabled && !resolver.IsWithinLambdaExpression && resolver.CurrentMember != null) { if (resolverEnabled && !resolver.IsWithinLambdaExpression && resolver.CurrentMember != null) {
IType type = resolver.CurrentMember.ReturnType; IType type = resolver.CurrentMember.ReturnType;
@ -2625,7 +2623,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return resolverEnabled ? voidResult : null; return resolverEnabled ? voidResult : null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitYieldReturnStatement(YieldReturnStatement yieldStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitYieldReturnStatement(YieldReturnStatement yieldStatement)
{ {
if (resolverEnabled && resolver.CurrentMember != null) { if (resolverEnabled && resolver.CurrentMember != null) {
IType returnType = resolver.CurrentMember.ReturnType; IType returnType = resolver.CurrentMember.ReturnType;
@ -2637,41 +2635,41 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return resolverEnabled ? voidResult : null; return resolverEnabled ? voidResult : null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement)
{ {
return voidResult; return voidResult;
} }
#endregion #endregion
#region Other statements #region Other statements
ResolveResult IAstVisitor<object, ResolveResult>.VisitExpressionStatement(ExpressionStatement expressionStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitExpressionStatement(ExpressionStatement expressionStatement)
{ {
ScanChildren(expressionStatement); ScanChildren(expressionStatement);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitLockStatement(LockStatement lockStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitLockStatement(LockStatement lockStatement)
{ {
ScanChildren(lockStatement); ScanChildren(lockStatement);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitEmptyStatement(EmptyStatement emptyStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitEmptyStatement(EmptyStatement emptyStatement)
{ {
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitBreakStatement(BreakStatement breakStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitBreakStatement(BreakStatement breakStatement)
{ {
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitContinueStatement(ContinueStatement continueStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitContinueStatement(ContinueStatement continueStatement)
{ {
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitThrowStatement(ThrowStatement throwStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitThrowStatement(ThrowStatement throwStatement)
{ {
if (resolverEnabled) { if (resolverEnabled) {
ResolveAndProcessConversion(throwStatement.Expression, resolver.Compilation.FindType(KnownTypeCode.Exception)); ResolveAndProcessConversion(throwStatement.Expression, resolver.Compilation.FindType(KnownTypeCode.Exception));
@ -2682,34 +2680,34 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitTryCatchStatement(TryCatchStatement tryCatchStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitTryCatchStatement(TryCatchStatement tryCatchStatement)
{ {
ScanChildren(tryCatchStatement); ScanChildren(tryCatchStatement);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement)
{ {
ScanChildren(gotoCaseStatement); ScanChildren(gotoCaseStatement);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement)
{ {
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitGotoStatement(GotoStatement gotoStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitGotoStatement(GotoStatement gotoStatement)
{ {
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitLabelStatement(LabelStatement labelStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitLabelStatement(LabelStatement labelStatement)
{ {
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitUnsafeStatement(UnsafeStatement unsafeStatement, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUnsafeStatement(UnsafeStatement unsafeStatement)
{ {
return voidResult; return voidResult;
} }
@ -2842,7 +2840,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Attributes #region Attributes
ResolveResult IAstVisitor<object, ResolveResult>.VisitAttribute(Attribute attribute, object data) ResolveResult IAstVisitor<ResolveResult>.VisitAttribute(Attribute attribute)
{ {
var type = ResolveType(attribute.Type); var type = ResolveType(attribute.Type);
@ -2864,7 +2862,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return rr; return rr;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitAttributeSection(AttributeSection attributeSection, object data) ResolveResult IAstVisitor<ResolveResult>.VisitAttributeSection(AttributeSection attributeSection)
{ {
ScanChildren(attributeSection); ScanChildren(attributeSection);
return voidResult; return voidResult;
@ -2872,26 +2870,26 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Using Declaration #region Using Declaration
ResolveResult IAstVisitor<object, ResolveResult>.VisitUsingDeclaration(UsingDeclaration usingDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUsingDeclaration(UsingDeclaration usingDeclaration)
{ {
ScanChildren(usingDeclaration); ScanChildren(usingDeclaration);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitUsingAliasDeclaration(UsingAliasDeclaration usingDeclaration)
{ {
ScanChildren(usingDeclaration); ScanChildren(usingDeclaration);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration, object data) ResolveResult IAstVisitor<ResolveResult>.VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration)
{ {
return voidResult; return voidResult;
} }
#endregion #endregion
#region Type References #region Type References
ResolveResult IAstVisitor<object, ResolveResult>.VisitPrimitiveType(PrimitiveType primitiveType, object data) ResolveResult IAstVisitor<ResolveResult>.VisitPrimitiveType(PrimitiveType primitiveType)
{ {
if (!resolverEnabled) if (!resolverEnabled)
return null; return null;
@ -2908,7 +2906,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return new TypeResolveResult(type); return new TypeResolveResult(type);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitSimpleType(SimpleType simpleType, object data) ResolveResult IAstVisitor<ResolveResult>.VisitSimpleType(SimpleType simpleType)
{ {
if (!resolverEnabled) { if (!resolverEnabled) {
ScanChildren(simpleType); ScanChildren(simpleType);
@ -2939,7 +2937,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return rr; return rr;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitMemberType(MemberType memberType, object data) ResolveResult IAstVisitor<ResolveResult>.VisitMemberType(MemberType memberType)
{ {
ResolveResult target; ResolveResult target;
if (memberType.IsDoubleColon && memberType.Target is SimpleType) { if (memberType.IsDoubleColon && memberType.Target is SimpleType) {
@ -2966,7 +2964,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return rr; return rr;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitComposedType(ComposedType composedType, object data) ResolveResult IAstVisitor<ResolveResult>.VisitComposedType(ComposedType composedType)
{ {
if (!resolverEnabled) { if (!resolverEnabled) {
ScanChildren(composedType); ScanChildren(composedType);
@ -2987,7 +2985,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Query Expressions #region Query Expressions
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryExpression(QueryExpression queryExpression, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryExpression(QueryExpression queryExpression)
{ {
resolver = resolver.PushBlock(); resolver = resolver.PushBlock();
var oldQueryResult = currentQueryResult; var oldQueryResult = currentQueryResult;
@ -3118,7 +3116,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryFromClause(QueryFromClause queryFromClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryFromClause(QueryFromClause queryFromClause)
{ {
ResolveResult result = errorResult; ResolveResult result = errorResult;
ResolveResult expr = Resolve(queryFromClause.Expression); ResolveResult expr = Resolve(queryFromClause.Expression);
@ -3172,7 +3170,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return new ConversionResolveResult(result.Type, result, Conversion.IdentityConversion); return new ConversionResolveResult(result.Type, result, Conversion.IdentityConversion);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause)
{ {
ResolveResult rr = Resolve(queryContinuationClause.PrecedingQuery); ResolveResult rr = Resolve(queryContinuationClause.PrecedingQuery);
IType variableType = GetTypeForQueryVariable(rr.Type); IType variableType = GetTypeForQueryVariable(rr.Type);
@ -3183,7 +3181,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return WrapResult(rr); return WrapResult(rr);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryLetClause(QueryLetClause queryLetClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryLetClause(QueryLetClause queryLetClause)
{ {
ResolveResult expr = Resolve(queryLetClause.Expression); ResolveResult expr = Resolve(queryLetClause.Expression);
StoreCurrentState(queryLetClause.IdentifierToken); StoreCurrentState(queryLetClause.IdentifierToken);
@ -3200,7 +3198,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryJoinClause(QueryJoinClause queryJoinClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryJoinClause(QueryJoinClause queryJoinClause)
{ {
// join v in expr on onExpr equals equalsExpr [into g] // join v in expr on onExpr equals equalsExpr [into g]
ResolveResult inResult = null; ResolveResult inResult = null;
@ -3349,7 +3347,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return rr; return rr;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryWhereClause(QueryWhereClause queryWhereClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryWhereClause(QueryWhereClause queryWhereClause)
{ {
ResolveResult condition = Resolve(queryWhereClause.Condition); ResolveResult condition = Resolve(queryWhereClause.Condition);
IType boolType = resolver.Compilation.FindType(KnownTypeCode.Boolean); IType boolType = resolver.Compilation.FindType(KnownTypeCode.Boolean);
@ -3368,7 +3366,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
} }
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQuerySelectClause(QuerySelectClause querySelectClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQuerySelectClause(QuerySelectClause querySelectClause)
{ {
if (currentQueryResult == null) { if (currentQueryResult == null) {
ScanChildren(querySelectClause); ScanChildren(querySelectClause);
@ -3431,7 +3429,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryGroupClause(QueryGroupClause queryGroupClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryGroupClause(QueryGroupClause queryGroupClause)
{ {
if (currentQueryResult == null) { if (currentQueryResult == null) {
ScanChildren(queryGroupClause); ScanChildren(queryGroupClause);
@ -3450,7 +3448,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return resolver.ResolveInvocation(methodGroup, arguments); return resolver.ResolveInvocation(methodGroup, arguments);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryOrderClause(QueryOrderClause queryOrderClause, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryOrderClause(QueryOrderClause queryOrderClause)
{ {
foreach (QueryOrdering ordering in queryOrderClause.Orderings) { foreach (QueryOrdering ordering in queryOrderClause.Orderings) {
currentQueryResult = Resolve(ordering); currentQueryResult = Resolve(ordering);
@ -3458,7 +3456,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
return WrapResult(currentQueryResult); return WrapResult(currentQueryResult);
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitQueryOrdering(QueryOrdering queryOrdering, object data) ResolveResult IAstVisitor<ResolveResult>.VisitQueryOrdering(QueryOrdering queryOrdering)
{ {
if (currentQueryResult == null) { if (currentQueryResult == null) {
ScanChildren(queryOrdering); ScanChildren(queryOrdering);
@ -3482,7 +3480,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Constructor Initializer #region Constructor Initializer
ResolveResult IAstVisitor<object, ResolveResult>.VisitConstructorInitializer(ConstructorInitializer constructorInitializer, object data) ResolveResult IAstVisitor<ResolveResult>.VisitConstructorInitializer(ConstructorInitializer constructorInitializer)
{ {
if (!resolverEnabled) { if (!resolverEnabled) {
ScanChildren(constructorInitializer); ScanChildren(constructorInitializer);
@ -3504,56 +3502,56 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#region Other Nodes #region Other Nodes
// Token nodes // Token nodes
ResolveResult IAstVisitor<object, ResolveResult>.VisitIdentifier(Identifier identifier, object data) ResolveResult IAstVisitor<ResolveResult>.VisitIdentifier(Identifier identifier)
{ {
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitComment (Comment comment, object data) ResolveResult IAstVisitor<ResolveResult>.VisitComment (Comment comment)
{ {
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitPreProcessorDirective (PreProcessorDirective preProcessorDirective, object data) ResolveResult IAstVisitor<ResolveResult>.VisitPreProcessorDirective (PreProcessorDirective preProcessorDirective)
{ {
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode)
{ {
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitArraySpecifier(ArraySpecifier arraySpecifier, object data) ResolveResult IAstVisitor<ResolveResult>.VisitArraySpecifier(ArraySpecifier arraySpecifier)
{ {
return null; return null;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitPatternPlaceholder(AstNode placeholder, ICSharpCode.NRefactory.PatternMatching.Pattern pattern, object data) ResolveResult IAstVisitor<ResolveResult>.VisitPatternPlaceholder(AstNode placeholder, ICSharpCode.NRefactory.PatternMatching.Pattern pattern)
{ {
return null; return null;
} }
// Nodes where we just need to visit the children: // Nodes where we just need to visit the children:
ResolveResult IAstVisitor<object, ResolveResult>.VisitAccessor(Accessor accessor, object data) ResolveResult IAstVisitor<ResolveResult>.VisitAccessor(Accessor accessor)
{ {
ScanChildren(accessor); ScanChildren(accessor);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitSwitchSection(SwitchSection switchSection, object data) ResolveResult IAstVisitor<ResolveResult>.VisitSwitchSection(SwitchSection switchSection)
{ {
ScanChildren(switchSection); ScanChildren(switchSection);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitCaseLabel(CaseLabel caseLabel, object data) ResolveResult IAstVisitor<ResolveResult>.VisitCaseLabel(CaseLabel caseLabel)
{ {
ScanChildren(caseLabel); ScanChildren(caseLabel);
return voidResult; return voidResult;
} }
ResolveResult IAstVisitor<object, ResolveResult>.VisitConstraint(Constraint constraint, object data) ResolveResult IAstVisitor<ResolveResult>.VisitConstraint(Constraint constraint)
{ {
ScanChildren(constraint); ScanChildren(constraint);
return voidResult; return voidResult;
@ -3561,7 +3559,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
#endregion #endregion
#region Documentation Reference #region Documentation Reference
ResolveResult IAstVisitor<object, ResolveResult>.VisitDocumentationReference(DocumentationReference documentationReference, object data) ResolveResult IAstVisitor<ResolveResult>.VisitDocumentationReference(DocumentationReference documentationReference)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

Loading…
Cancel
Save