From 1ade7c4996d1733d439fa27459b06b3d36152676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Fri, 27 Apr 2012 19:45:47 +0200 Subject: [PATCH] [Resolver] Fixed using statement. --- .../Resolver/ResolveVisitor.cs | 3 +++ .../CSharp/Resolver/NameLookupTests.cs | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs index 9f8c1522da..eed5b3e8ac 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/ResolveVisitor.cs @@ -2823,6 +2823,9 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver ResolveResult IAstVisitor.VisitUnsafeStatement(UnsafeStatement unsafeStatement) { + resolver = resolver.PushBlock(); + ScanChildren(unsafeStatement); + resolver = resolver.PopBlock(); return voidResult; } #endregion diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs index a7033621d9..33bc534f83 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/NameLookupTests.cs @@ -970,5 +970,24 @@ class MainClass : Test Assert.IsFalse(result.IsError); Assert.AreEqual("Test.Foo.Bar", result.Member.FullName); } + + [Test] + public void LocalInsideUnsafeBlock() + { + string program = @"class A { + void Method() { + unsafe { + string a; + string b = $a$; + } + } +} +"; + LocalResolveResult result = Resolve(program); + Assert.AreEqual("a", result.Variable.Name); + Assert.IsFalse(result.IsParameter); + + Assert.AreEqual("System.String", result.Type.FullName); + } } }