// // BaseRefactoringContext.cs // // Author: // Mike Krüger // // Copyright (c) 2012 Xamarin // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System; using System.Linq; using System.Threading; using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.CSharp.TypeSystem; using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using ICSharpCode.NRefactory.Editor; namespace ICSharpCode.NRefactory.CSharp.Refactoring { public abstract class BaseRefactoringContext { protected readonly CSharpAstResolver resolver; readonly CancellationToken cancellationToken; public virtual bool Supports(Version version) { return true; } public CancellationToken CancellationToken { get { return cancellationToken; } } public virtual AstNode RootNode { get { return resolver.RootNode; } } public ICompilation Compilation { get { return resolver.Compilation; } } public BaseRefactoringContext (ICSharpCode.NRefactory.CSharp.Resolver.CSharpAstResolver resolver, System.Threading.CancellationToken cancellationToken) { this.resolver = resolver; this.cancellationToken = cancellationToken; } #region Resolving public ResolveResult Resolve (AstNode node) { return resolver.Resolve (node, cancellationToken); } public CSharpResolver GetResolverStateBefore(AstNode node) { return resolver.GetResolverStateBefore (node, cancellationToken); } public CSharpResolver GetResolverStateAfter(AstNode node) { return resolver.GetResolverStateAfter (node, cancellationToken); } public IType ResolveType (AstType type) { return resolver.Resolve (type, cancellationToken).Type; } public IType GetExpectedType (Expression expression) { return resolver.GetExpectedType(expression, cancellationToken); } public Conversion GetConversion (Expression expression) { return resolver.GetConversion(expression, cancellationToken); } #endregion public abstract Script StartScript(); } }