Browse Source

Resolve visitor change: If the type of an object create expression

can't be resolved give back the type resolution failure.
This is required to tell why the object creation couldn't be resolved.
newNRvisualizers
mike 14 years ago
parent
commit
b13dad1436
  1. 5
      ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs
  2. 5
      ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs

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

@ -1310,7 +1310,10 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver @@ -1310,7 +1310,10 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
ResolveResult IAstVisitor<ResolveResult>.VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression)
{
if (resolverEnabled || !objectCreateExpression.Initializer.IsNull) {
IType type = ResolveType(objectCreateExpression.Type);
var typeResolveResult = Resolve(objectCreateExpression.Type);
if (typeResolveResult.IsError)
return typeResolveResult;
IType type = typeResolveResult.Type;
var initializer = objectCreateExpression.Initializer;
if (!initializer.IsNull) {

5
ICSharpCode.NRefactory.Tests/CSharp/Resolver/ObjectCreationTests.cs

@ -43,7 +43,7 @@ class A { @@ -43,7 +43,7 @@ class A {
}
[Test]
public void NonExistingClass()
public void NonExistingClass ()
{
string program = @"class A {
void Method() {
@ -51,7 +51,8 @@ class A { @@ -51,7 +51,8 @@ class A {
}
}
";
ResolveResult result = Resolve<ErrorResolveResult>(program);
ResolveResult result = Resolve (program);
Assert.IsTrue (result.IsError);
Assert.AreSame(SpecialType.UnknownType, result.Type);
}

Loading…
Cancel
Save