diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs index 7e82dc3fc5..fbc53925e7 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs @@ -238,8 +238,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring } } - if (AlwaysUseShortTypeNames|| - (typeDef.DeclaringTypeDefinition != null && typeDef.DeclaringTypeDefinition.Equals (resolver.CurrentTypeDefinition))) { + if (AlwaysUseShortTypeNames) { var shortResult = new SimpleType(typeDef.Name); AddTypeArguments(shortResult, typeArguments, outerTypeParameterCount, typeDef.TypeParameterCount); return shortResult; diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs index 549ba43721..d299378a72 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs @@ -202,8 +202,11 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver /// to the correct state. /// Otherwise, use resolver.Scan(compilationUnit); var result = resolver.GetResolveResult(node); /// instead. + /// -- + /// This method now is internal, because it is difficult to use correctly. + /// Users of the public API should use Scan()+GetResolveResult() instead. /// - public ResolveResult Resolve(AstNode node) + internal ResolveResult Resolve(AstNode node) { if (node == null || node.IsNull) return errorResult; @@ -296,7 +299,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver Log.WriteLine(" Data not found."); } } - if (expr != null && conversion != Conversion.IdentityConversion) + if (expr != null && !expr.IsNull && conversion != Conversion.IdentityConversion) navigator.ProcessConversion(expr, rr, conversion, targetType); } @@ -2415,6 +2418,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver type = MakeVarTypeReference(foreachStatement.InExpression, true); } } else { + Scan(foreachStatement.InExpression); type = ResolveType(foreachStatement.VariableType); } IVariable v = resolver.AddVariable(type, MakeRegion(foreachStatement.VariableNameToken), foreachStatement.VariableName);