private CSharpTypeResolveContext(IAssembly assembly, ResolvedUsingScope usingScope, ITypeDefinition typeDefinition, IMember member, string[] methodTypeParameterNames) { this.assembly = assembly; this.currentUsingScope = usingScope; this.currentTypeDefinition = typeDefinition; this.currentMember = member; this.methodTypeParameterNames = methodTypeParameterNames; }
public CSharpTypeResolveContext(IAssembly assembly, ResolvedUsingScope usingScope = null, ITypeDefinition typeDefinition = null, IMember member = null) { if (assembly == null) throw new ArgumentNullException("assembly"); this.assembly = assembly; this.currentUsingScope = usingScope; this.currentTypeDefinition = typeDefinition; this.currentMember = member; }
public CSharpTypeResolveContext(IAssembly assembly, ResolvedUsingScope usingScope = null, ITypeDefinition typeDefinition = null, IMember member = null) { if (assembly == null) { throw new ArgumentNullException("assembly"); } this.assembly = assembly; this.currentUsingScope = usingScope; this.currentTypeDefinition = typeDefinition; this.currentMember = member; }
/// <summary> /// Resolves the namespace represented by this using scope. /// </summary> public ResolvedUsingScope Resolve(ICompilation compilation) { CacheManager cache = compilation.CacheManager; ResolvedUsingScope resolved = (ResolvedUsingScope)cache.GetShared(this); if (resolved == null) { var csContext = new CSharpTypeResolveContext(compilation.MainAssembly, parent != null ? parent.Resolve(compilation) : null); resolved = (ResolvedUsingScope)cache.GetOrAddShared(this, new ResolvedUsingScope(csContext, this)); } return(resolved); }
/// <summary> /// Sets the current using scope that is used to look up identifiers as class names. /// </summary> public CSharpResolver WithCurrentUsingScope(ResolvedUsingScope usingScope) { return WithContext(context.WithUsingScope(usingScope)); }
ResolveResult LookInUsingScopeNamespace(ResolvedUsingScope usingScope, INamespace n, string identifier, IList<IType> typeArguments, bool parameterizeResultType) { if (n == null) return null; // first look for a namespace int k = typeArguments.Count; if (k == 0) { INamespace childNamespace = n.GetChildNamespace(identifier); if (childNamespace != null) { if (usingScope != null && usingScope.HasAlias(identifier)) return new AmbiguousTypeResolveResult(new UnknownType(null, identifier)); return new NamespaceResolveResult(childNamespace); } } // then look for a type ITypeDefinition def = n.GetTypeDefinition(identifier, k); if (def != null) { IType result = def; if (parameterizeResultType && k > 0) { result = new ParameterizedType(def, typeArguments); } if (usingScope != null && usingScope.HasAlias(identifier)) return new AmbiguousTypeResolveResult(result); else return new TypeResolveResult(result); } return null; }
public CSharpTypeResolveContext WithUsingScope(ResolvedUsingScope usingScope) { return new CSharpTypeResolveContext(assembly, usingScope, currentTypeDefinition, currentMember, methodTypeParameterNames); }
public CSharpTypeResolveContext WithUsingScope(ResolvedUsingScope usingScope) { return(new CSharpTypeResolveContext(assembly, usingScope, currentTypeDefinition, currentMember, methodTypeParameterNames)); }