From ae54fd5d6f7eba264da95f250ffc1170b7f4fd78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Mon, 5 Dec 2011 07:49:47 +0100 Subject: [PATCH] Added GetTypeResolveContext implementation. --- .../TypeSystem/CSharpParsedFile.cs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpParsedFile.cs b/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpParsedFile.cs index bd3ec9f677..5a3d51c726 100644 --- a/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpParsedFile.cs +++ b/ICSharpCode.NRefactory.CSharp/TypeSystem/CSharpParsedFile.cs @@ -20,6 +20,7 @@ using System; using System.Collections.Generic; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; +using System.Linq; namespace ICSharpCode.NRefactory.CSharp.TypeSystem { @@ -138,5 +139,29 @@ namespace ICSharpCode.NRefactory.CSharp.TypeSystem } return null; } + + public ITypeResolveContext GetTypeResolveContext (ICompilation compilation, TextLocation loc) + { + var rctx = new CSharpTypeResolveContext (compilation.MainAssembly); + rctx = rctx.WithUsingScope (GetUsingScope (loc).Resolve (compilation)); + var curDef = GetInnermostTypeDefinition (loc); + if (curDef != null) { + var resolvedDef = curDef.Resolve (rctx).GetDefinition (); + if (resolvedDef == null) + return rctx; + rctx = rctx.WithCurrentTypeDefinition (resolvedDef); + + var curMember = resolvedDef.Members.FirstOrDefault (m => m.Region.FileName == FileName && m.Region.Begin <= loc && loc < m.BodyRegion.End); + if (curMember != null) + rctx = rctx.WithCurrentMember (curMember); + } + + return rctx; + } + + public ICSharpCode.NRefactory.CSharp.Resolver.CSharpResolver GetResolver (ICompilation compilation, TextLocation loc) + { + return new ICSharpCode.NRefactory.CSharp.Resolver.CSharpResolver (GetTypeResolveContext (compilation, loc) as CSharpTypeResolveContext); + } } }